将消息从内容脚本传递到主脚本

joshft91

编辑3:找到解决方案/修复

这是为我解决的SO线程:PageMod多次将worker附加到同一URL

TLDR:如果页面包含iFrame,它将在其上附加一个工作程序/内容脚本,从而导致尝试运行多个内容脚本。使用attachTo: 'top'仅将脚本附加到顶级文档,而不附加iFrame。


我正在努力移植我制作的一个简单的Chrome扩展程序,并且在传递Firefox插件的消息时遇到了麻烦。这就是我所拥有的。

csScript.js

self.port.emit("url", getVideoUrl());

function getVideoUrl() {  
  return $('meta[itemprop=contentURL]').prop('content');
}

main.js

pageMod.PageMod({
  include: [URLs],
  exclude: [URLs],
  contentScriptFile: [data.url("jquery-2.1.1.min.js"),
                      data.url("csScript.js")],
  onAttach: function(worker) {
    worker.port.on("url", function(url) {
      var videoUrl = validateUrl(url);
      });
    }
  });

当某个URL被命中时,我想获取一个属性值并将其发送回我的main.js并使用它。由于现在有效,因此出现message is null错误。我已经阅读了文档,但似乎无法理解如何传递消息。


编辑:更改onAttach为:

onAttach: function(worker) {
    worker.port.on("url", function(url) {
      var videoUrl = validateUrl(url);
      });
    }
  });

似乎变化不大。我要做的就是将内容脚本中的一个字符串传递回我的main.js文件。然而,上面的代码,它告诉我说urlnull我浏览过的所有文档似乎都表明这是Firefox插件中消息传递的工作方式。


Edit2:添加一些日志语句后,我注意到了几件事:

1)匹配URL时,我的内容脚本运行了10次以上。我不知道为什么 该脚本已附加到每个iFrame。

2)大多数情况下,URL返回空值/未定义。但是,它只能正常工作一次-从内容脚本中提取URL,然后将其正确传递回main.js文件。但是,再次运行的内容脚本会立即将其清除。

joshft91

pageMod构造函数中,使用该attachTo: 'top'选项会将脚本仅附加到顶层文档。内容脚本已附加到其他iFrame,然后尝试运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将消息从内容脚本传递到主脚本

来自分类Dev

Firefox插件(JPM)-如何将消息从面板脚本传递到内容脚本?

来自分类Dev

Rsyslog omprog将消息传递到脚本

来自分类Dev

如何将数据从内容脚本传递到页面级?

来自分类Dev

如何从iframe的内容脚本传递回消息?

来自分类Dev

是否可以将脚本传递到WScript?

来自分类Dev

将值从文件传递到awk脚本

来自分类Dev

将参数传递到Powershell脚本

来自分类Dev

将数据从python脚本传递到HTML

来自分类Dev

将输入文件传递到后台脚本

来自分类Dev

将变量从bash脚本传递到makefile

来自分类Dev

将参数传递到远程脚本块

来自分类Dev

将Lua脚本从C ++传递到Lua

来自分类Dev

使用KVM将脚本传递到VM

来自分类Dev

将参数传递到Powershell脚本

来自分类Dev

将值列表传递到bash脚本

来自分类Dev

将变量从Java传递到Shell脚本

来自分类Dev

将数据从python脚本传递到HTML

来自分类Dev

将Datetime传递到Powershell脚本

来自分类Dev

将参数从文件传递到bash脚本

来自分类Dev

PHP将参数传递到后台脚本

来自分类Dev

从Perl将Args传递到子脚本

来自分类Dev

如何将变量从Shell脚本传递到mysql脚本

来自分类Dev

将参数从shell脚本传递到配置单元脚本

来自分类Dev

将参数从Windows批处理脚本传递到Powershell脚本

来自分类Dev

将参数从bash脚本传递到脚本中的函数

来自分类Dev

使用脚本本身将脚本传递到后台

来自分类Dev

从Chrome扩展程序中的内容脚本传递消息

来自分类Dev

从Chrome扩展程序中的内容脚本传递消息