繁体   English   中英

在Safari中扩展安装后如何访问DOM

[英]How to access DOM after extension installation in Safari

完成Safari扩展的安装后是否可以访问DOM? 我有兴趣访问安装此扩展程序的页面的HTML。

您可以通过注入JS脚本来实现。 注入的脚本可以访问注入它们的网页的DOM。 注入的脚本具有与从网页主机执行的脚本相同的访问权限。

您可以在此处找到更多信息。

从注入的脚本调用函数

  1. 项目清单
  2. 使用扩展构建器创建扩展文件夹。 复制
  3. 将清单放入文本编辑器中,并另存为Injected.js和Global.html。
  4. 将Injected.js和Global.html拖到扩展文件夹中。 点击
  5. 在Extension Builder中扩展“扩展全局页面”,然后选择Global.html。
  6. 单击“结束脚本”中的“新建脚本”,然后选择Injected.js。 设置
  7. 将网站访问权限扩展到全部。 单击安装。

代码注入

var initialVal=1;
var calculatedVal=0 ;

function doBigCalc(theData) {
    safari.self.tab.dispatchMessage("calcThis",theData);
}

function getAnswer(theMessageEvent) {
    if (theMessageEvent.name === "theAnswer") {
        calculatedVal=theMessageEvent.message;
        console.log(calculatedVal);
    }
}
safari.self.addEventListener("message", getAnswer, false);

doBigCalc(initialVal);

代码 Global.html

<!DOCTYPE HTML>
<html>
<head>
<title>global HTML page</title>
<script type="text/javascript">

function bigCalc(startVal, event) {
    // imagine hundreds of lines of code here...
    var endVal = startVal + 2;
    // return to sender
    event.target.page.dispatchMessage("theAnswer", endVal);
}

function respondToMessage(theMessageEvent) {
    if(theMessageEvent.name === "calcThis") {
        var startVal=theMessageEvent.message;
        bigCalc(startVal, theMessageEvent);
    }
}

    safari.application.addEventListener("message",respondToMessage,false);
</script>
</head>
<body>
</body>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM