0

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 を返しています。

アラート

拡張ビルダー

4

0 に答える 0