从popup.html获取当前URL并将其发送到external.js

时间:2011-02-20 22:24:15

标签: url google-chrome tabs

在没有为我找到解决方案的情况下进行搜索,

我需要能够在显示Chrome扩展程序时发送和重新显示当前标签网址:

这是我的popup.html:

<html>
<head>

<style>
div, td, th { color: black; }
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script>
  function getURL_please(){
      chrome.tabs.getSelected(null, function(tab) {    
    return tab.url;
});   
  }
</script>
<script src="http://keepyourlinks.com/API/public/chrome.js"></script>
</head>
<body style="width: 650px;height:600px;margin:0px;paddin:0px;width:100%;">
    <span class="keeper">keep</span>       
</body>
</html>

然后,在我的网站上,我尝试使用chrome.js文件:

$("body").ready(function(){
        var url = getURL_please();
    $(".keeper").click(function(event) {
        event.preventDefault(); 
        window.open("http://keepyourlinks.com/API/public/compartir_link.php?url="+url,'about to keep', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=650,height=600');
    });         
});

但是URL总是如此:未定义

知道我做错了吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

HI Toni,

Google Chrome扩展程序使用异步API

function getURL_please(){
  chrome.tabs.getSelected(null, function(tab) {    
    return tab.url;
  });   
}

以上将始终返回null。如果你想让它正常工作。

function getURL_please(){
  chrome.tabs.getSelected(null, function(tab) {    
    var url = tab.url;
    // Do what you want here.
  });   
}

您需要在获取网址后打开窗口。但有一个问题,你在网站上的意思是什么?您无法直接在您的网站上运行Chrome扩展程序JavaScript,因此我假设通过“内容脚本”(最有可能,只是确定)?

如果您使用内容脚本,为什么需要使用Extension API?您可以使用window.location.href