7
$x("//a[contains(@href,'.jpg')]"); 

は、開発者向けツールのコマンドプロンプトから期待通りに機能します。しかし、拡張機能のコンテンツスクリプトでは、「$x is not defined」と表示されます。

なぜコンテンツスクリプトで利用できないのですか、またはcontent-script/Chrome拡張機能内で特別な方法でアクセスするのはなぜですか?

私はDebianでChrome 22を使用しています。

+0

ヒント:コンソールに 'debugger;'と入力してください。 –

+0

私にはどんな追加情報があるのか​​混乱していますか? – rutherford

+0

ただ試してみてください。あなたはhttp://i.stack.imgur.com/AXRPG.png –

答えて

7

$x()は、Webページまたはコンテンツスクリプトの実行環境の一部ではありません。これはthe Command Line API for Chrome's DevToolsの一部であるツールです。

コンテンツスクリプトでXPathを使用するには、通常の方法で行う必要がありますが、DevToolsの便利なショートカットは利用できません。

あなたのコードは次のようになります

var jpgLinks = document.evaluate (
    "//a[contains(@href,'.jpg')]", 
    document, 
    null, 
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
    null 
); 
var numLinks = jpgLinks.snapshotLength; 

for (var J = 0; J < numLinks; ++J) { 
    var thisLink = jpgLinks.snapshotItem (J); 
    console.log ("Link ", J, " = ", thisLink); 
} 

から$x()は舞台裏で、あなたのためにやったことが事の一種です。


あなたがそれでありながら、CSS selectorsへの切り替えを検討してください。同じ機能は次のとおりです。

- 私の本でははるかに美味です。

関連する問題