javascript - 客户端 ajaxComplete 调用生成无限 iframe

标签 javascript iframe greasemonkey

好的,这是我的问题。我正在编写 Greasemonkey 脚本以在 AJAX 化网站上插入两个 iframe,但 ajaxComplete 陷入循环并生成过多的 iframe(有时是一个,有时是五个,等等),gener.

我已经完成研究,[我认为]我的问题是我没有正确地将调用绑定(bind)到文档,但我不确定这一点。我不确定你会如何做与我已经有的不同。如果你们能指出我正确的方向,我将不胜感激。这是有问题的代码:

function OnLoadWidgets() {
    var tempSC = document.createElement("div");                                        
        tempSC.id = "SCWidget";
        tempSC.innerHTML = "..."
    document.getElementById("content-right").appendChild(tempSC);
    var tempMC = document.createElement("div");                                        
        tempMC.id = "MCWidget";
        tempMC.innerHTML = "..."
   document.getElementById("content-right").appendChild(tempMC);

}   

unsafeWindow.jQuery(document).ajaxComplete(function()
{   
    var existingSCPlayer = document.getElementById("SCWidget");                     
    if(typeof(existingPlayer) == "undefined")
    {
        OnLoadWidgets();
    }
});

您可以在此处查看其余代码: http://userscripts.org/scripts/show/127312

也想借此机会感谢大家的辛勤工作。怎么感谢都不为过,真的。堆栈==救生员

最佳答案

(1) 目标站点,hypem.com ,使用它自己的 iframe,您的 Greasemonkey 脚本也会在这些 iframe 上触发。

通过添加来防止这种情况:

if (window.top != window.self)  //-- Don't run on frames or iframes.
    return;

靠近脚本的顶部。


(2) 代码中有一个变量名错字。 existingSCPlayerexistingPlayer


(3) 细化重复检查以使其更具包容性。使用此代码:

unsafeWindow.jQuery (document).ajaxComplete ( function () {
    var existingSCPlayer = document.getElementById ("SCWidget");
    var existingMCPlayer = document.getElementById ("MCWidget");
    if ( ! existingSCPlayer  &&  ! existingMCPlayer) {
        OnLoadWidgets();
    }
} );

关于javascript - 客户端 ajaxComplete 调用生成无限 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135046/

相关文章:

javascript - Chrome 开发工具在调试 iframe contentWindow 时崩溃

javascript - 在 Greasemonkey 中自动登录?

android - Chromecast Custom Receiver 播放优质内容

javascript - 在不完全重新加载第二个 iframe 的情况下打开两个 iframe

在 FireFox 之外进行 Javascript 调试

javascript - 我怎样才能用greasemonkey选择正确的单选按钮?

javascript - 是否可以将 selectionCounter 添加到 PrimeFaces 组件?

javascript - 寻找特定的警报框行为

javascript - d3 平行坐标日期时间轴

javascript - 比较两个对象,如果对象键值对的一部分存在则返回 true