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内的一系列触摸事件
下面是模拟JQMtap
的最小存根:
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;
});