Chrome-来自WebExtension的iframe中的eval()

时间:2019-04-09 21:52:08

标签: javascript google-chrome google-chrome-extension

我正在使用WebExtension,该WebExtension会从网页中抓取一些数据。有问题的页面将内容动态加载到iframe中,并且iframe中包含我需要的内容。我不需要的数据永远不会写入iframe文档,它仅存在于JS对象中。

在WebExtension内部,我尝试执行以下操作:

var result = $("iframe")[0].contentWindow.eval("(function() { return $('#grid').jqxGrid('getrows'); }())");

当在Firefox中使用扩展程序时,此功能可以正常工作。没问题。

不幸的是,尝试在Chrome中执行相同的操作会导致评估上出现错误$ is not defined

在过去的几个小时里,我一直在努力找出原因,而我完全不知所措。如果有人能指出我正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我仍然不确定eval()为什么能在Firefox中运行而不能在Chrome中运行,但这是我最终为了获得所需的东西而做的事情:

1)在我的扩展程序中为自定义事件添加事件监听器。

window.addEventListener("myCustomEvent", function(e) { HandleResult(e.detail); });

2)将包含代码的脚本块注入到iframe文档的正文中,以触发事件(包括我需要的数据)。

$("body", $("iframe").contents()).append("<script>top.dispatchEvent(new CustomEvent('myCustomEvent', {detail: $('#grid').jqxGrid('getrows') }));</script>")

wOxxOm大喊,以使我的大脑指向正确的方向。