如何解决如何基于Safari浏览器扩展名中的URL来自地址栏进行阻止
|| 我正在尝试编写一个扩展程序,该扩展程序如果每小时被访问N次以上,则将阻止对URL(可配置)列表的访问。据我了解,我需要一个启动脚本将“应该加载此消息”消息传递到全局HTML页面(谁可以访问设置对象以获取URL列表),该人会对此表示赞许/拒绝消息返回开始脚本以拒绝/允许加载。 这对我来说很好,但是当我使用常规的beforeLoad / canLoad处理程序时,我会收到所有需要加载的子项目的消息(图像/等),这会增加#accesses / hour的限制\正在努力。 有没有一种方法可以在两个沙箱之间来回同步传递消息,所以我可以告诉全局HTML页面,“这是窗口栏中的URL和该请求进入的时间戳”,因此我可以限制重复的请求? 谢谢!解决方法
您可以对用于检查是否允许页面加载的函数使用不同的消息,而不是使用与beforeLoad处理函数相同的消息。例如,在注入的脚本(必须是\“ start \”脚本)中,输入:
safari.self.tab.dispatchMessage(\'pageIsLoading\');
并在全局脚本中:
function handleMessage(event) {
if (event.name == \'pageIsLoading\') {
if (event.target.url.indexOf(\'forbidden.site.com\') > -1) {
console.log(event.timeStamp);
event.target.url = \'about:blank\';
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。