Javascript/Safari-搜索网页';使用innerHTML创建文本
我正在为MacOSX的Safari浏览器开发一个扩展。我只希望在页面上出现几个特定字符串时执行此扩展。它应该在整个HTML文档中搜索这些字符串 验证布尔: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
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);
}