检查父iFrame是否已加载jQuery

时间:2012-10-01 10:03:51

标签: javascript jquery iframe login widget

我正在尝试在iframe中创建可在客户端网站上使用的登录窗口小部件。这个iframe将使用jQuery,但我首先不能检查父文档是否加载了jQuery,如果没有,加载它。

我尝试了几种不同的技术,但似乎没有工作,或者决定两次加载jQuery库。

非常感谢任何帮助。

此代码块位于iframe内部加载的页面内,该页面拒绝合作。

<script>

var jQOutput = false;

function initjQuery() { 

if (typeof(jQuery) == 'undefined'){     
    if (!jQOutput){         
        jQOutput = true;

        var jScript = document.createElement('script');
        jScript.setAttribute("type", "text/javascript");
        jScript.setAttribute("src", "js/libs/jquery/jquery-min.js");
    }
    setTimeout("initjQuery()", 50);
} else {
    $(function() {
        $("#email").css({"background":"red"});
        //visual aid to see if jQuery is loaded.
    });
} 
}
</script>

我只想检查并查看iframe的父级是否已加载jQuery,如果没有,请自行加载,因为我将使用它来执行完成登录过程所需的几项任务。

2 个答案:

答案 0 :(得分:1)

满足评论:

  

我不认为你想存档的内容是可信的,因为相同的原始政策(通过JavaScript跨域访问) - 在Google上查看它... http://google.com/search?q=same+origin+policy


如果您另一方面不违反相同的原始政策,您可以使用以下内容存档您想要的内容:

var parent = window.parent; // This refers to parent's window object

if ( parent && parent.jQuery ) { // Check to see if parent and parent.jQuery is truly
    window.jQuery = parent.jQuery;
    window.$ = parent.jQuery;
}
else {
    // load jQuery here
}

答案 1 :(得分:1)

您的小部件的JavaScript代码必须分为两部分。其中一个将加载到客户端的网站上。它有权访问站点的DOM:如果需要加载jQuery,创建iframe等等(特别注意那里的全局变量!尽量不要使用它们,因为它们可能与站点的代码冲突。 )请注意,此部分无法访问iframe的DOM。这就是为什么你需要第二部分,它将被加载到iframe内部。您可以使用跨域技术为部件彼此交换消息。我建议你查看easyXDM library