私は、特定の要素内のテキストを検索し、そのテキストを使用して後で処理する、かなり基本的なGreaseMonkeyスクリプトを作成しています。関連するコードは次のとおりです。
HTMLには、クラス'someclass'のスパンがあり、これには小さなテキスト文字列が含まれています。
<span class="someclass">some text</span>
次に、JavaScriptで、このクラスを見つけて、そのコンテンツ(「テキスト」)を標準のXPathジャズを使用して変数にプルしようとしています。
document.evaluate("//span[@class='someclass']/text()", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
問題は次のとおりです。「一部のテキスト」が基本文字を含む基本文字列であるページでこれを実行すると、すべてが正常に機能しますが、「一部のテキスト」にエンティティが含まれているページで実行すると失敗します。たとえば、これらはすべて問題なく、XPathは必要なテキストを返します。
<span class="someclass">some text</span>
<span class="someclass">some other text</span>
<span class="someclass">sometext</span>
<span class="someclass">some text 12345</span>
ただし、これによりエラーが発生します。
<span class="someclass">some text's text</span>
返されるエラーは次のとおりです。
Error: The expression is not a legal expression.
Source File: file:///blahblahblah.user.js
Line: (JS line i gave above)
こことGoogleで、XPathがエンティティとどのように問題を抱えているかについて話している結果をいくつか見つけましたが、それらはすべて次のようなことをしてい[text() = 'blah &racquo; blah']ました。つまり、エンティティはXPathクエリ自体にあります。私はそうではありません、それらは私がXPathクエリから返そうとしているテキストにあります。
これは同じ問題ですか?それを回避する簡単な方法はありますか?
ありがとう!