【问题标题】:How detect a specific url in browser and get html page associate in Javascript?如何检测浏览器中的特定 url 并在 Javascript 中获取 html 页面关联?
【发布时间】:2019-05-22 18:38:03
【问题描述】:

我需要用javascript 修改html 页面(填写字段)。 我有一个特定的 url,但我不知道当浏览器在正确的 url 上时如何监听并获取 html 代码关联。

我通过网络扩展来做到这一点,所以javascript 必须在网络浏览器中检查 url 并从这里获取html

谢谢你帮助我

【问题讨论】:

  • @Lewis – 将内容脚本注入每个页面,然后从脚本内部测试 URL 是一种非常糟糕的方法,它需要安装脚本的用户更多的信任。这不是一个好方法。
  • @Tinou3231 - 只是跟进。你的问题得到了满意的回答吗?如果我可以提供更多帮助,请在我的答案下方添加评论,或编辑您的问题以澄清您还想知道什么。否则,如果您可以选择“最佳答案”(通过单击答案旁边的复选标记)来结束问题,那就太好了。如果没有答案提供有用的信息,请添加您自己的答案并选择它作为最佳答案。还请记住,您可以以任何方式对您认为有帮助的任何答案进行投票 - 如果需要,您也可以对您勾选的答案进行投票。 谢谢!

标签: javascript html firefox-addon-webextensions


【解决方案1】:

当我在 Google 中输入 firefox extension tutorial 时,第一个点击是 this tutorial from MDN。非常接近它的顶部是有这个代码示例:

现在直接在下面创建一个名为“manifest.json”的新文件 “边界化”目录。给它以下内容:

{

  "manifest_version": 2,
  "name": "Borderify",
  "version": "1.0",

  "description": "Adds a red border to all webpages matching mozilla.org.",

  "icons": {
    "48": "icons/border-48.png"
  },

  "content_scripts": [
    {
      "matches": ["*://*.mozilla.org/*"],
      "js": ["borderify.js"]
    }
  ]

}

这里最有趣的关键是 content_scripts,它告诉 Firefox 将脚本加载到 URL 与特定模式匹配的网页中。 在这种情况下,我们要求 Firefox 加载一个名为 将“borderify.js”添加到从“mozilla.org”提供的所有 HTTP 或 HTTPS 页面中 或其任何子域。

因此,在您的清单中,将 "*://*.mozilla.org/*" 更改为与您要运行脚本的页面匹配的内容。

内容脚本 ("borderify.js") 应该能够使用 querySelector 等标准方法访问该页面的 DOM。

【讨论】:

    【解决方案2】:

    您正在寻找 webnavigation oncomptete 事件。为此,您需要webNavigation 权限

    chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
      if (changeInfo.status == 'complete') {
        if (tab.url.indexOf("__your__url") != -1) {
          alert("__your__url loaded");
         //here do your work 
        }
      }
    });
    

    你必须在后台 JS 中编写这个。您需要将消息传递给内容脚本并在那里形成您必须完成的工作

    更多关于这个 https://developer.chrome.com/extensions/webNavigation#event-onCompleted

    有关消息传递的更多信息 https://developer.chrome.com/apps/messaging

    【讨论】:

      【解决方案3】:

      你的问题有点含糊,但如果我理解正确的话......

      如果您想填写网页上的字段和/或单击按钮,那么您可能需要使用名为 Tampermonkey 的 Firefox 扩展。

      Tampermonkey 允许您为所需的任何网站创建脚本,这些脚本将在页面上注入(并运行)额外的 javascript 代码(您提供)。坦率地说,它运行得非常好 - 我已经为几十个网站创建了脚本,这些脚本可以完成从登录网站到删除广告/图像/杂乱,再到完全重新格式化页面的所有操作。

      显然,TM 脚本仅在您的计算机上运行,​​并且仅在该计算机上为您更改网站外观。

      一个基本的 Tampermonkey 脚本如下所示:

      // ==UserScript==
      // @name         SO Hide HNQ
      // @namespace    http://tampermonkey.net/
      // @match        https://stackoverflow.com/questions/*
      // @match        https://stackoverflow.com
      // @grant        none
      // ==/UserScript==
      
      (function() {
          'use strict';
      
          var myHnq = document.getElementById('hot-network-questions');
          myHnq.style.display = 'none';
      })();
      

      请注意,也可以通过添加此行在您的 TM 脚本中使用 jQuery

      // @require      http://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
      

      // ==/UserScript== 块中的某处。

      【讨论】:

      • 他们说他们正在编写一个网络扩展,而不是使用 Tampermonkey。
      • 是的,但我关注的是他想做什么,而不是他想怎么做。 TM 比编写 Web 扩展更简单——也许它会更好地满足他的需求。
      猜你喜欢
      • 2019-07-07
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多