Firefox page-mod - “contentScript”:null

时间:2014-06-20 05:45:26

标签: javascript firefox firefox-addon firefox-addon-sdk

我正在做page-mod tutorial

这是我的代码: main.js

var tag = 'p'
var data = require('sdk/self').data
var pageMod = require('sdk/page-mod')

pageMod.PageMod({
    include: '*',
    contentScriptFile: data.url('element-getter.js'),
    onAttach: attachHandler
})

function attachHandler(worker) {
    console.log('worker ', worker)
    worker.port.emit('getElements', tag)
    worker.port.on('gotContent', function(content) {
        console.log('received content ', content)
    })
}

element-getter.js

self.port.on('getElements', function(tag) {
    console.log('received tag ', tag)
    var elements = document.getElementsByTagName(tag)
    console.log('found elements ', elements)
    for (var i=0; i< elements.length; i++) {
        self.port.emit('gotContent', elements[i].innerHTML)
    })
})

(也可在github.com/findjashua/pgmod中找到)

它只在终端上记录第一条消息,在浏览器控制台上没有记录。从消息中,您可以看到它认为contentScript为空。我在这做错了什么?

以下是登录终端的内容:

console.error: pgmod:
  Message: SyntaxError: syntax error
console.log: pgmod: worker  constructor {"contentScriptFile":"resource://jid1-kkjpd9s1yzxe9g-at-jetpack/pgmod/data/element-getter.js","contentScript":null,"port":{}}

1 个答案:

答案 0 :(得分:0)

抱歉,SyntaxError让我分心了。它是SyntaxError,但不是由于编码。

来自你的回购:

self.port.on('getElements', function(tag) {
    console.log('received tag ', tag)
    var elements = document.getElementsByTagName(tag)
    console.log('found elements ', elements)
    for (var i=0; i< elements.length; i++) {
        self.port.emit('gotContent', elements[i].innerHTML)
    }) // <-- trailing parenthesis, left-over from having .forEach in there before 
})

通过删除尾部括号来修复此问题后,代码对我有效。