这是我的第一个Safari浏览器扩展,迄今为止我喜欢安静一点。 我想补充一点,与injected.js页面交互,并经由jQuery的.toggle页面切换项目()的伸缩杆;
我已经能够将jQuery加载到页面没有任何问题,但是当它涉及到从长杆发送消息给我,没有达到injected.js。 我已经超过8小时花在今天回顾苹果的开发者页面。 我设法做的唯一的事情就是
接杆:
<!DOCTYPE html>
<html>
<head>
<title>Board Tools</title> <!-- Extension Bar -->
<script type="text/javascript" src="jQuery.min.js"></script>
<script type="text/javascript">
const myGlobal = safari.extension.globalPage.contentWindow;
function ToggleBoard(){
myGlobal.test();
}
</script>
</head>
<body>
<input type="button" id="board" value="Board Toggle" onClick="ToggleBoard();">
</body>
</html>
全球HTML:
<!DOCTYPE HTML>
<html>
<head>
<title>global page</title>
<script type="text/javascript">
function test() {
alert("1");
event.target.page.dispatchMessage("test", "test");
alert("2");
}
</script>
</head>
<body> </body>
</html>
Injected.js:
function test(msgEvent) {
alert(msgEvent.name);
}
// register for message events
safari.self.addEventListener("message", test, false);
我能够从分机电话拨打栏ToggleBoard()函数。 该ToggleBoard()函数可以调用从全球HTML测试()函数。 当测试()函数被调用全球HTML页面上的拳头警报触发时,第二个没有。 至少远我已经把范围缩小。 我得到我想要把我的信息的方式可能是错的,但这是在这里说: https://developer.apple.com/library/archive/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html #// apple_ref / DOC / UID / TP40009977-CH14-SW1
只是为了看看它是否是我的一部分或愚蠢的东西与我抄他们的网页上的确切代码的开发页面错误,只是使用Global HTML和Injected.js,我仍然没有得到我一直在寻找的结果。
解决:我选择的答案确实对我有问题,申请了很多。 这不是确切的答案每说,但它确实,随着意见帮我把我的代码理顺。 为了获得各种扩展组件消息正确,我需要设置为所有扩展远程访问,然后添加URL模式到白名单中。 我只扩展上触发我想要的网页,我可以使用的消息。