Javascript/Safari-搜索网页';使用innerHTML创建文本

Javascript/Safari-搜索网页';使用innerHTML创建文本,javascript,html,safari,innerhtml,safari-extension,Javascript,Html,Safari,Innerhtml,Safari Extension,我正在为MacOSX的Safari浏览器开发一个扩展。我只希望在页面上出现几个特定字符串时执行此扩展。它应该在整个HTML文档中搜索这些字符串 验证布尔: function validateStringsPresent(){ var index1 = document.documentElement.innerHTML.indexOf(validationText1); var index2 = document.documentElement.innerHTML.indexOf

我正在为MacOSX的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
。除了
,这些字符串中没有特殊字符,但这不应该是一个因素

我的理论是,在Safari中使用扩展时,我需要的不是
文档
类。例如,要获取当前URL,
文档
类也不起作用。我必须使用
var currentUrl=safari.application.activeBrowserWindow.activeTab.url

不过,我还没有找到正确的Safari类来完成我要做的事情

谁能给我指出正确的方向吗

编辑

现在尝试通过注入脚本

按钮点击功能:

function performCommand(event)
{
    getHTML();
}

safari.application.addEventListener("command", performCommand, true);
js: 函数getHTML()

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


您将此代码放在哪里?在或中?它在全局页面中,我正在使用工具栏中的按钮激活我的扩展。您需要一个注入脚本,并传递一条消息,请参见。谢谢,我现在正在注入.js文件,但它从全局页面返回HTML,而不是活动窗口/选项卡。然后,您不注入HTML。仅供参考,Safari扩展中的“注入脚本”与Chrome/Firefox扩展中的“内容脚本”类似:脚本在选项卡上下文中运行,而不是在扩展的背景页面中运行。全局页面是在后台运行的不可见页面。
{
    var val1 = document.documentElement.innerHTML;

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