Jquery iframe中的$(文档)对于注入的脚本无法正常工作

Jquery iframe中的$(文档)对于注入的脚本无法正常工作,jquery,Jquery,我有一个iframe。当我以正常方式加载iframe时,所有$document都引用iframe文档 但是当我从主窗口向iframe主体注入一些脚本时,$document指的是主文档而不是iframe 我需要注入的$document引用iframe文档,而不是主文档 我怎样才能解决这个问题 更新 您可以在控制台中看到,注入的$document显示了与$document相同的内容 问题来自使用$.globalEval的jQuery: 此方法的行为与使用普通JavaScript评估不同 因为它是在全

我有一个iframe。当我以正常方式加载iframe时,所有$document都引用iframe文档

但是当我从主窗口向iframe主体注入一些脚本时,$document指的是主文档而不是iframe

我需要注入的$document引用iframe文档,而不是主文档

我怎样才能解决这个问题

更新

您可以在控制台中看到,注入的$document显示了与$document相同的内容


问题来自使用$.globalEval的jQuery:

此方法的行为与使用普通JavaScript评估不同 因为它是在全局上下文中执行的,这一点很重要 用于动态加载外部脚本

来自jQuery的源代码domManip方法:

要解决您的问题,您可以改用javascript appendChild,例如:

var head = $("#myframe")[0].contentWindow.document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.innerHTML = 'console.log("injected script using javascript appendChild:" ); console.log(document);';
head.appendChild(script);

使用$'myIframe'。内容不跨域iframe@A.Wolff我不能,因为注入的代码也可以加载到另一个元素中,而不是关于脚本注入的iframePost相关代码。我想问题是因为jQuery在内部使用了$.globalEval
// Evaluate executable scripts on first document insertion
for ( i = 0; i < hasScripts; i++ ) {
    node = scripts[ i ];
    if ( rscriptType.test( node.type || "" ) &&
        !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {

        if ( node.src ) {
            // Hope ajax is available...
            jQuery._evalUrl( node.src );
        } else {
            jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
        }
    }
}
append: function() {
    return this.domManip( arguments, function( elem ) {...});
}
var head = $("#myframe")[0].contentWindow.document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.innerHTML = 'console.log("injected script using javascript appendChild:" ); console.log(document);';
head.appendChild(script);