试图建立safari扩展。不工作-.-

时间:2013-07-01 02:45:01

标签: javascript safari

因此,我正在为自己的个人使用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>

这是我的扩展程序集设置。 enter image description here

1 个答案:

答案 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