【问题标题】:Get attribute from window opening从窗口打开获取属性
【发布时间】:2018-03-12 11:53:58
【问题描述】:

为了从打开窗口 JABRA 网站获取属性,我尝试了这个 JS-Code。

var popup = window.open("http://www.jabra.com.de/Support/warranty-checker");

popup.alert("Hello");

var yaya = popup.document.querySelectorAll(".serial-number")[0].getAttribute("type");

popup.alert("getting variable: "+yaya);

popup.alert("World!");

当打开 JABRA 窗口时,它会提示“Hello”,但不会获取属性,并且最后一个提示“World”不会显示。

我尝试了不同的 JS 代码,例如:

var yaya = popup.querySelectorAll(".serial-number")[0].getAttribute("type");

var yaya = popup.querySelectorAll(".serial-number").getAttribute("type");

请问有什么解决办法!

【问题讨论】:

  • 据我所知,您无法访问通过window.open 打开的窗口的 DOM。您应该获取该页面。
  • 谢谢回复,你能告诉我这段代码的小例子,如何获取那个页面吗?
  • 由于跨域限制,我不太确定如何正常操作。使用像 Greasemonkey 这样的用户脚本管理器,您可以使用 GM.xmlHttpRequest 从不同的域获取页面。并且使用 WebExtension,您还可以通过从扩展的事件页面获取页面来完成此操作。

标签: javascript window.open selectors-api getattribute


【解决方案1】:

窗口是在同一个域/主机上打开的,还是在不同的? 如果它们不同,那么不幸的是这是一个security constraint 被浏览器禁止跨站脚本。

建议的方法是使用postMessage API 在两个Window 对象(帧等)之间进行安全通信。

【讨论】:

  • 谢谢回复,我在另一个上使用它,测试数据文件 test.html 也是正常的,然后我把它放在浏览器中,只是为了获得从这个 Jabra 网站获取属性的权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2010-09-20
相关资源
最近更新 更多