【问题标题】:How to access and change html from addon(Mozilla Addon SDK) main code?如何从插件(Mozilla插件SDK)主代码访问和更改html?
【发布时间】:2014-01-26 05:51:07
【问题描述】:

需要从主代码访问 html 内容,以便我可以用另一个字符串替换某些字符串/单词并显示在网页中。我尝试将字符串数组从主代码发送到内容脚本。然后我在内容脚本中使用 jquery 来获取 html 内容。 (.html())。然后我使用 javascript replace 方法替换了字符串,并返回了新的 html 内容以加载到网页中。但它没有用1需要一些帮助

【问题讨论】:

  • 什么时候不起作用? Web 控制台或浏览器控制台中是否有错误消息?请显示将 HTML 重新注入页面的代码。您是否考虑过使用 GreaseMonkey 脚本而不是完整的插件?
  • mainaddoncode: var tabs = require("sdk/tabs"); var self=require("sdk/self"); var pageMod=require("sdk/page-mod"); var str="to"; pageMod.PageMod({ include: "*", contentScriptWhen: "ready", contentScriptFile:[self.data.url("jquery-1.10.2.min.js"),self.data.url("script.js" )], onAttach: 函数 OnAttach(worker) { worker.port.emit("a",str); } });
  • @YolandaRuiz 脚本代码:self.port.on("a",function(s1){ var s=s1; var h=$("body").html(); var h1; h1=h.replace(s,"FILTERED"); h=h1; $("body").html(h); });
  • 请使用示例代码编辑您的问题,原样的问题信息不足。

标签: mozilla firefox-addon-sdk


【解决方案1】:

string .replace() 方法只会替换第一次出现,在你的脚本代码中尝试用这个替换所有出现:

var h1 = h.replace(new RegExp(s, 'g'), 'FILTERED');

如果您的输入包含特殊字符或用户输入值,请查看this answer 以获得更完整的替换全部处理方法。由于替换使用正则表达式进行操作,因此您必须小心输入值,如果有可能包含正则表达式元字符,请正确转义。

【讨论】:

    猜你喜欢
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2016-09-10
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多