我正在开发 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,而不是当前网页。