Javascript / Safari - 使用innerHTML搜索网页的文本

时间:2013-08-24 21:29:30

标签: javascript html safari innerhtml safari-extension

我正在开发Mac OS X Safari浏览器的扩展程序。如果页面上出现一些特定字符串,我只希望执行此扩展。它应该在整个HTML文档中搜索这些字符串。

验证bool:

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。 <{1}}除了:之外,这些字符串中没有特殊字符,但这不应该是一个因素。

我的理论是,在Safari中使用扩展程序时,我需要document类之外的其他内容。例如,要获取当前URL,document类也不起作用。我不得不使用var currentUrl = safari.application.activeBrowserWindow.activeTab.url;

但是,我无法找到正确的Safari类来完成我想要做的事情。

有人能指出我正确的方向吗?

修改

现在尝试通过注入脚本。

按钮点击功能:

function performCommand(event)
{
    getHTML();
}

safari.application.addEventListener("command", performCommand, true);

injected.js: 函数getHTML()

{
    var val1 = document.documentElement.innerHTML;

    alert("You are using injected.js" + "\n" + "\n"
            + val1);    
}

正如您在下面的屏幕截图中看到的那样,getHTML()从我的全局文件而不是当前网页返回HTML。

Alert

Extension Builder

0 个答案:

没有答案