页面上 iframe 中的 jQuery 不起作用

Posted

技术标签:

【中文标题】页面上 iframe 中的 jQuery 不起作用【英文标题】:jQuery in iframe on page doesn't work 【发布时间】:2017-08-12 19:19:22 【问题描述】:

我在使附加的 jQuery 在 iframe 上的页面中工作时遇到了一些麻烦。我要么得到 ​​p>

未捕获的错误:

未捕获的引用错误:$ 未定义

以下部分负责将脚本附加到 iframe 上显示的页面:

var simpleScriptTest = '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">'+
'</script>'+
'<script>'+
  '$("a").hover(function()'+   
  ' $(this).css("background-color", "rgb(255, 255, 0)");'+
  ');'+
'</script>';

$('iframe').on("load",function()
  loadedIframe = true;
  $("iframe").contents().find('script').remove();
  $("iframe").contents().find('noscript').remove();
  $("iframe").contents().find("head").append(simpleScriptTest);
  console.log('load the iframe');
);

谁能解释为什么会发生这种情况以及我如何解决这个问题?

【问题讨论】:

“in my facebook page's copy in iframe” – 你是什么意思? @CBroe 我的意思是我有完整的 facebook 页面副本可以显示在同一域的 iframe 中。 “fb 页面的完整副本”?为什么?做什么的?这甚至不应该工作...... @luschn,这行得通(我得到 html、css、js 等等,你在加载 fb 页面时得到的一切),为什么不重要。这不是问题... “为什么”总是很重要,因为也许会有另一种(更好的)方法;) 【参考方案1】:

您似乎在加载 jquery $ 之前调用它。 这个:

$('iframe').on("load",function()
  loadedIframe = true;
  $("iframe").contents().find('script').remove();
  $("iframe").contents().find('noscript').remove();
  $("iframe").contents().find("head").append(simpleScriptTest);
  console.log('load the iframe');
);

jquery 的 $('iframe') 在你实际加载 jquery (append(simpleScriptTest)) 到你的页面之前被调用。所以这就是为什么你的页面不理解 $?还是您在其他地方已经有 jquery 链接?

【讨论】:

我说的是 iframe 中的一个页面

以上是关于页面上 iframe 中的 jQuery 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery/iframe 在 Chrome 中不起作用

iframe中的jquery手风琴在Firefox中不起作用

具有动态内容的动态附加 iframe 在内容元素上写入 jquery 事件句柄不起作用

iframe 对象的点击事件不起作用

iframe 文件上传在 IE 上不起作用

jquery地址和iframe