jQuery:window.opener有所作为

时间:2014-02-10 15:11:52

标签: javascript jquery window.opener

我正在使用localhost(所以我希望没有任何与域相关的问题为here)。

在一个页面上,我使用了一些JS来修改打开窗口中的span的内容。这是行不通的。 检查我的代码以查找控件时,它可以正常工作(使用FF dev-tools调用我的Increment - 函数或检查console.log - 输出):$('#uploads_Count')返回HTMLSpanElement类型的对象。但是,尝试使用window.opener.$('#uploads_Count')从打开的窗口控制台访问同一控件时,会返回一个HTML-Document,看起来就像是整个页面。为什么这不起作用,我在这里缺少什么?

这是一个函数,它应该增加包含在其id作为参数的范围中的计数器:

function Increment(ctrl)
{
   var gef = $("#" + ctrl);
   if (!gef) // did not find control, maybe on opener?
   {
      gef = window.opener.$("#" + ctrl);
   }
   console.log(gef);

   cnt = parseInt(gef.text() , 10);
   cnt++;
   gef.text(cnt);
}

HTML很简单:

<span id="uploads_Count">0</span>

2 个答案:

答案 0 :(得分:0)

如果$(selector)返回一个元素(例如HTMLSpanElement),而不是一个元素集合(在大多数开发工具中看起来像[<span id="uploads_Count"></span>]),那么你不会调用{ {1}}。

A级浏览器中的开发工具倾向于引入jQuery作为选择器函数。它仅在开发人员控制台中可用。

如果$存在,那么可能会调用jQuery.noConflict(),在这种情况下您应该使用window.jQuery

答案 1 :(得分:0)

发现它!

我检查控件是否被找到的方式是错误的。而不是if (!gef)我应该使用if (!gef.length)。找到了解释here