火狐没有在 iframe 中加载 javascript 可能是啥原因

Posted

技术标签:

【中文标题】火狐没有在 iframe 中加载 javascript 可能是啥原因【英文标题】:What can be the causes of firefox not loading the javascript in an iframe火狐没有在 iframe 中加载 javascript 可能是什么原因 【发布时间】:2014-05-12 10:05:54 【问题描述】:

我发现一个问题很难调试,当 Firefox 从 iframe 中加载我的代码时,它似乎只发生在 Firefox 上。我对浏览器的差异知之甚少,为了使这项工作能够进行,问题是间歇性的。我已将其追溯到 javascript 中的此错误,而我在 chrome 上却没有。

TypeError: $(...).autocomplete(...).data(...) 为空

现在我认为正在调用的相关代码来自这样的 javascript 自动完成功能。

$("#field").data( "ui-autocomplete" )._renderItem = function( ul, item )  ... 

让我感到困惑的是它似乎是一个间歇性的 firefox 错误,我无法在 chrome 上重现它。有没有人知道这里发生了什么?

注意我读过this、this 和几个类似的,但我的问题是.data 返回null,而不是.data("autocomplete")undefined...

提前致谢。

【问题讨论】:

哦,当然,如果我可以添加更多细节,请告诉我,我很乐意。 发布链接以检查问题(如果可能)。 您在控制台/Firebug 上遇到什么错误? TypeError: $(...).autocomplete(...).data(...) is null 【参考方案1】:

你能提供一些 jsFiddle 或一个具体的例子吗?很难说是什么问题。

无论如何,也许您可​​以通过以下方式解决问题:

if( $("#field").data() )
    var fieldAuto = $("#field").data( "ui-autocomplete" );
    if( fieldAuto )
        fieldAuto._renderItem = function( ul, item )  ... ;
    

ui-autocomplete 取决于 jQuery 版本,因此您可能必须更改它

【讨论】:

谢谢,这是一个很好的观点,如果这不起作用,我会尝试你的建议并尝试让 jsfiddle 启动并使用 SSCE 运行(不幸的是,它是我继承的紧密耦合系统,所以可能需要一段时间。) 如果有人好奇,我设法找出问题的原因。 javascript 正在每个页面上运行,并且会在没有所需元素的页面上崩溃(导致错误)。这是一种解决方案,另一种解决方案只是更改功能以确保它仅在所需的页面上运行。【参考方案2】:

根据您使用的 jquery ui 版本,它将是“自动完成”或“ui-autocomplete”。

var autoComplete = input.data("ui-autocomplete");
if(typeof(autoComplete) == "undefined")
    autoComplete = input.data("autocomplete");
 autoComplete._renderItem = function(ul, item) ....

如果有任何进一步的问题,请检查并告诉我。

干杯.. :)

【讨论】:

以上是关于火狐没有在 iframe 中加载 javascript 可能是啥原因的主要内容,如果未能解决你的问题,请参考以下文章

Fancybox 卡在 IE 中加载 iframe

iframe 未在 Jquery 中加载

Google Docs Viewer 偶尔无法在 iframe 中加载内容

使用 ajax 在 IFRAME 中加载页面

如何通过 AJAX 在 div 中加载 iFrame

iframe 未在 WKWebview 中加载