【问题标题】:Get current URL获取当前网址
【发布时间】:2013-04-21 16:19:11
【问题描述】:

我希望在 Firefox 中获取所选选项卡的当前 url,我有一个针对 contentURL 的 Firefox SDK 面板,并且我一直在使用 Javascript 来尝试获取当前 url;

window.content.location.href

但不幸的是,除非我在我的 contentURL 页面上显示任何其他页面,否则它不起作用。

谢谢!

【问题讨论】:

    标签: javascript sdk firefox-addon-sdk


    【解决方案1】:

    可以这样获取网址

    var url = require('sdk/tabs').activeTab.url;
    

    这仅适用于您的附加代码,不适用于内容脚本。差异见this guide

    如果您想从内容脚本触发查找和/或想在内容脚本中使用 URL,您必须communicate using "port"

    这是一个示例,其中当前选项卡的 url 在单击按钮时显示在面板中。

    lib/main.js(附加代码):

    const data = require('sdk/self').data;
    
    var panel = require('sdk/panel').Panel({
        contentURL: data.url('panel.html'),
        contentScriptFile: data.url('panel.js')
    });
    
    panel.port.on('get url', function () {
        panel.port.emit('return url', require('sdk/tabs').activeTab.url);
    });
    
    panel.show();
    

    data/panel.js(内容脚本):

    var button = document.getElementById('button');
    var urlspan = document.getElementById('url');
    
    button.addEventListener('click', function () {
        self.port.emit('get url');
    });
    
    self.port.on('return url', function (url) {
        urlspan.textContent = url;
    });
    

    数据/panel.html:

    <!DOCTYPE html>
    <html>
      <head>
            <meta charset="utf-8" />
        <title>panel</title>
      </head>
      <body>
        <button id="button">
          Get Current URL
        </button>
        <br>
        Current URL: <span id="url"></span>
      </body>
    </html>
    

    【讨论】:

    • 是否可以通过单击按钮将其附加到 ContentURL?对不起,我对写sdk不太了解
    • 在 ContentURL 中添加什么?你的意思是什么类型的按钮?在您的面板内?
    • 是的,我几乎会在 html 表单“获取当前 URL”上有一个按钮,然后它将获取选定的选项卡 url 并将其附加到 url ex“www.domain.com/geturl.php ?url=CurrentURL"
    • 我已经用一个例子更新了我的答案。重点是如何使用“端口”在附加代码和内容脚本之间传递 URL。
    • 完美运行!谢谢 Martin Puppe,感谢您为帮助我所花费的所有时间。
    【解决方案2】:

    在 JavaScript 中:

    window.location.href
    

    在php中:

    $_SERVER["REQUEST_URI"]
    

    【讨论】:

    • 感谢您的快速回复,我都试过了,它们只返回 SDK 面板的 contentURL
    • 好吧,这对你有帮助吗:stackoverflow.com/questions/11594576/…
    • 我已经在 stackoverflow 上进行了全面搜索,但我仍然无法解决问题,我唯一幸运的是 window.content.location.href 它只适用于我的 contentURL 页面,一旦我在另一个页面上尝试它,它不会提醒我任何东西。
    猜你喜欢
    • 2020-12-15
    • 2012-01-01
    • 1970-01-01
    • 2017-05-03
    • 2017-12-24
    • 2012-04-19
    相关资源
    最近更新 更多