Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使在等待.onload之后,也无法将事件侦听器添加到iframe元素_Javascript_Html_Dom_Iframe - Fatal编程技术网

Javascript 即使在等待.onload之后,也无法将事件侦听器添加到iframe元素

Javascript 即使在等待.onload之后,也无法将事件侦听器添加到iframe元素,javascript,html,dom,iframe,Javascript,Html,Dom,Iframe,我现在正在尝试访问我的站点上的iFrame(myly.eu/pages/shop local),并将事件侦听器添加到输入字段和按钮中。问题是我使用的插件嵌入在iFrame中,所以这就是为什么我必须首先使用这种解决方法 我意识到我必须等待iFrame中的DOM被完全加载,这就是为什么我在iFrame中添加了onload函数,但不知何故它仍然不起作用,我也不知道为什么 <script> var iframe = document.getElementById("store-locator

我现在正在尝试访问我的站点上的iFrame(myly.eu/pages/shop local),并将事件侦听器添加到输入字段和按钮中。问题是我使用的插件嵌入在iFrame中,所以这就是为什么我必须首先使用这种解决方法

我意识到我必须等待iFrame中的DOM被完全加载,这就是为什么我在iFrame中添加了onload函数,但不知何故它仍然不起作用,我也不知道为什么

<script>
var iframe = document.getElementById("store-locator-wrapper");

  iframe.onload = function() {

    $('#MapAddress').keypress(function(event){
      var keycode = (event.keyCode ? event.keyCode : event.which);
      if(keycode == '13'){
        document.getElementById("geolocation-failed").style.display="none 
        !important";  
      }
    });

    document.getElementById("lsl-search-button").addEventListener("click", 
    function(){
      document.getElementById("geolocation-failed").style.display="none 
      !important";
    });
  }
</script>

var iframe=document.getElementById(“存储定位器包装”);
iframe.onload=函数(){
$('#MapAddress')。按键(函数(事件){
var keycode=(event.keycode?event.keycode:event.which);
如果(键代码=='13'){
document.getElementById(“地理位置失败”).style.display=“无
“!重要”;
}
});
document.getElementById(“lsl搜索按钮”).addEventListener(“单击“,
函数(){
document.getElementById(“地理位置失败”).style.display=“无
“!重要”;
});
}
代码要做的是使红色的“Geolocation not found”(地理位置未找到)消息消失,如果用户拒绝从浏览器(输入字段下方)访问位置,则会显示该消息

信息应该消失 1.如果用户在输入字段上按enter键(代码的第一部分) 2.如果用户单击输入字段下方的搜索按钮


要查看消息,您必须转到myly.eu/pages/shop-local并拒绝位置访问。

您必须告诉jQuery它必须查看iframe的文档,方法是将其作为上下文参数传递:
$('#MapAddress',iframe.contenDocument)
,但是,因为在您的情况下,内容来自不同的来源,您将无法访问此文档,因此您被卡住了。你唯一的解决方案就是联系这个插件的提供者,这样他们就可以公开一个API来做你想做的事情。例如,他们可以侦听
消息
事件,然后您可以执行
frame.postMessage({action:“killLocationAlert”},”https://client.lifterlocator.com)好的。但是在第二部分中,我想在我没有使用jQuery的按钮中添加一个事件侦听器,只是简单的JavaScript,这不应该以某种方式工作吗?还是因为iFrame托管在其他地方而没有机会@没有机会。您无法从页面访问此文档。任何图书馆或任何东西都不会改变这一点。联系这个插件的提供商,他们可能已经有了解决方案。好的,非常感谢!