Jquery 在iframe中调用tap事件

Jquery 在iframe中调用tap事件,jquery,reactjs,iframe,jquery-mobile,Jquery,Reactjs,Iframe,Jquery Mobile,我面临着一个我无法解决的大问题 我用react js开发了一个应用程序(app1)。此应用程序将与i frame一起包含在同一域下的另一个应用程序(app2)中。App2必须访问iframe中的对象,并在按钮上触发点击事件(无点击)。Tap事件是jquery mobile的一个自定义事件,我认为它用于无法更改的旧库中。我试过各种方法,但我真的不知道如何解决这个问题。web组件能解决我的问题吗?我可以使用jquery和jquery mobile创建一个web组件按钮,并将其包含在react应用程序

我面临着一个我无法解决的大问题


我用react js开发了一个应用程序(app1)。此应用程序将与i frame一起包含在同一域下的另一个应用程序(app2)中。App2必须访问iframe中的对象,并在按钮上触发点击事件(无点击)。Tap事件是jquery mobile的一个自定义事件,我认为它用于无法更改的旧库中。我试过各种方法,但我真的不知道如何解决这个问题。web组件能解决我的问题吗?我可以使用jquery和jquery mobile创建一个web组件按钮,并将其包含在react应用程序中。这可能是一个解决方案吗?否则,我想我必须从头开始用jquery编写应用程序

无法完全理解您的问题,
点击
只是一个名称,也就是说,您可以称之为“singletouch”或任何您想要的名称。也许您只需要在
iframe
中找到该按钮,然后向其添加一个
eventListener

无论如何,如果您将JQM包含在
iframe
中,JQM会将
tap
识别为同一目标上750ms内的一系列触摸事件

下面是模拟JQM
tap
的最小存根:

function raiseTap(target) {
  // just only one touch in list is enough
  var tcs = Array(new Touch({
        identifier: Date.now(),
        target: target,
        clientX: 0,
        clientY: 0
      }));

  // emulate a bubbling JQM tap 
  // if needed, add touchmove inbetween
  var events = ["touchstart", "touchend"],
      params = {touches: tcs, bubbles: true, changedTouches: tcs};
  for(var i=0, l=events.length; i<l; i++) {
    target.dispatchEvent(new TouchEvent(events[i], params));
  }
}

// find the target
var iframe = document.getElementById("iframe"),
    doc = iframe.contentDocument || iframe.contentWindow.document,
    btn = doc.getElementById("button");

raiseTap(btn);
函数raiseTap(目标){
//只需在列表中点击一次就足够了
var tcs=阵列(新触摸屏({
标识符:Date.now(),
目标:目标,,
客户端:0,
客户:0
}));
//模拟一个冒泡的JQM水龙头
//如果需要,在中间添加touchmove
var事件=[“touchstart”,“touchend”],
params={touch:tcs,bubbles:true,changedtouchs:tcs};
对于(var i=0,l=events.length;i


改为使用
单击
,或使用触摸事件创建自定义事件。我不能使用单击,因为库使用点击,我无法修改库。是否有方法从外部调用触发器(“点击”)并在iframte内部调用点击?触摸屏没有“鼠标悬停”、“鼠标悬停”功能
var myConfObj = {
  iframeMouseOver : false
}
window.addEventListener('blur',function(){
  if(myConfObj.iframeMouseOver){
    console.log('Wow! Iframe Click!');
  }
});

document.getElementById('YOUR_CONTAINER_ID').addEventListener('mouseover',function(){
   myConfObj.iframeMouseOver = true;
});
document.getElementById('YOUR_CONTAINER_ID').addEventListener('mouseout',function(){
    myConfObj.iframeMouseOver = false;
});