我正在开发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。