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() 正在从我的全局文件返回 HTML,而不是当前网页。

警报

扩展生成器

4

0 回答 0