Mac OS X の Safari ブラウザの拡張機能を開発中です。ページにいくつかの特定の文字列が表示された場合にのみ、この拡張機能を実行したいと考えています。HTML ドキュメント全体でこれらの文字列を検索する必要があります。
検証ブール値:
function validateStringsPresent(){
var index1 = document.documentElement.innerHTML.indexOf(validationText1);
var index2 = document.documentElement.innerHTML.indexOf(validationText2);
/* For testing purposes only */
alert("If an index = -1, it is not on the page" + "\n" + "\n"
+ index1 + "\n" + "\n"
+ index2);
if (index1 != -1 && index2 != -1) {return true};
else {return false};
}
ご想像のとおり、検証テキストを含む-1
ページの両方のインデックスを取得します。これらの文字列には を除いて特殊文字はあり:
ませんが、それは要因ではありません。
document
私の理論では、Safari で拡張機能を使用する場合、クラス以外の何かが必要になるというものです。たとえば、現在の URL を取得するdocument
クラスも機能しませんでした。私は使用しなければならなかったvar currentUrl = safari.application.activeBrowserWindow.activeTab.url;
ただし、私がやろうとしていることを達成するための正しい Safari クラスを見つけることができませんでした。
誰かが私を正しい方向に向けることができますか?
編集
現在、注入されたスクリプトを介して試行しています。
ボタンクリック機能:
function performCommand(event)
{
getHTML();
}
safari.application.addEventListener("command", performCommand, true);
注入された.js: 関数 getHTML()
{
var val1 = document.documentElement.innerHTML;
alert("You are using injected.js" + "\n" + "\n"
+ val1);
}
以下のスクリーン ショットでわかるように、getHTML() は、現在の Web ページではなく、グローバル ファイルから HTML を返しています。