jQuery 父项和弹出项之间的选择器行为差异 windows
jQuery selector behavior differences between parent and popup windows
为了让我的用户脚本正常工作,我实施了一个丑陋的修复。为了制作更直接和可维护的代码,我需要更好地理解为什么丑陋的修复有效。一些代码供您考虑:
var win = window.open('','');
var txt = '<div id="myId"></div>';
win.document.write(txt);
win.document.close();
alert($('#myId').length); // <=== displays a "0" ... WHY not a "1"??
弹出 window 中的用户脚本 运行ning 本身提供以下内容:
alert('Running from the popup window '+$('#myId').length); // <=== displays a "1" ... why only here?
为什么 $('#myId')
不正确地 select 当用户脚本是 运行 来自 window 的 window 时 window已生成,但是当用户脚本是 运行 来自弹出窗口 window 本身时 会 select div
吗?理解这两种情况之间的区别是我能够简化我的代码的关键(具体来说,能够控制父 window 的所有内容,而不是在弹出 运行 上要求单独的用户脚本 window).
注意:这个问题是 the one that I asked earlier 的一个更集中的问题。
jQuery(更具体地说是 JS 本身)将仅在您当前的 window 中搜索元素(如您所知,Window 对象是浏览器中的顶级对象)。 Popup window 是另一个 window 并且有自己的 Window 对象。所以有两个不同的范围。在第一种情况下,您仅在父 window 中搜索,而此 window 不包含 #myId
,因此 jQuery 什么也找不到。
为了让我的用户脚本正常工作,我实施了一个丑陋的修复。为了制作更直接和可维护的代码,我需要更好地理解为什么丑陋的修复有效。一些代码供您考虑:
var win = window.open('','');
var txt = '<div id="myId"></div>';
win.document.write(txt);
win.document.close();
alert($('#myId').length); // <=== displays a "0" ... WHY not a "1"??
弹出 window 中的用户脚本 运行ning 本身提供以下内容:
alert('Running from the popup window '+$('#myId').length); // <=== displays a "1" ... why only here?
为什么 $('#myId')
不正确地 select 当用户脚本是 运行 来自 window 的 window 时 window已生成,但是当用户脚本是 运行 来自弹出窗口 window 本身时 会 select div
吗?理解这两种情况之间的区别是我能够简化我的代码的关键(具体来说,能够控制父 window 的所有内容,而不是在弹出 运行 上要求单独的用户脚本 window).
注意:这个问题是 the one that I asked earlier 的一个更集中的问题。
jQuery(更具体地说是 JS 本身)将仅在您当前的 window 中搜索元素(如您所知,Window 对象是浏览器中的顶级对象)。 Popup window 是另一个 window 并且有自己的 Window 对象。所以有两个不同的范围。在第一种情况下,您仅在父 window 中搜索,而此 window 不包含 #myId
,因此 jQuery 什么也找不到。