我正在尝试在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,如果没有,请自行加载,因为我将使用它来执行完成登录过程所需的几项任务。
答案 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。