因此,我正在为自己的个人使用Safari扩展程序,而且它根本不起作用。 我试图跳过adf.ly并直接进入网站。但它根本没有做任何事情。 我已经尝试提醒当前的URL和假设的新URL,他们甚至都没有显示。
Global.html
<!DOCTYPE html>
<script type='application/javascript'>
// Skip Adf.ly
// Made by Austen Patterson
// For Safari
//(C) Copyright 2013 Austen Patterson.
safari.application.addEventListener("start", performCommand, true);
safari.application.addEventListener("validate", validateCommand, true);
// Function to perform when event is received
function performCommand(event) {
// Make sure event comes from the button
if (event.command == "skip") {
var url = this.activeBrowserWindow.activeTab.url;
var newurl = url.replace(/http:\/\/adf\.ly\/(\d+)\//, '');
location.href(newurl);
window.open(newurl,"_self");
return;
}
}
</script>
这是我的扩展程序集设置。
答案 0 :(得分:0)
您无法在全局页面中使用alert
。但是,您可以使用console.debug,这样可以提供帮助。
更大的问题是,您正在处理全局页面,就好像它可以访问您尝试通过window
对象修改的页面一样。它不起作用。 location.href
并未指出任何内容,window.open
可能无法在全局范围内发挥作用。 (这些都是泄漏的全局变量,这是你想要避免的。)我没有测试过,但这样的事情应该有效:
safari.application.addEventListener("beforeNavigate", function adflyChecker(event) {
var url = event.url.replace(/http:\/\/adf\.ly\/(\d+)\//, '');
safari.application.activeBrowserWindow.activeTab.url = url;
}, true);
这样做的好处是可以进行导航,而不需要您手动单击按钮。如果您将扩展程序配置为仅应用于adf.ly
网址,则可以确保您的代码仅在适当的时候触发。
有关Safari扩展程序架构的更多信息,请访问in the docs。