FirefoxBar / HeaderEditor

Manage browser's requests, include modify the request headers and response headers, redirect requests, cancel requests

Home Page:https://he.firefoxcn.net/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Question] 如何加载JS小书签?问题 2.0 版本

runningcheese opened this issue · comments

原问题是 #152

但好像已经年久失效,测试已经无效。
而且“修改响应体”在 Chrome 浏览器上也是失效的,无法添加。
有什么新方法吗?
感谢!!
iShot2022-12-26 14 51 54

if(detail.type === 'main_frame'){
  return val.replace(/(?=<\/body>)/, `<script>(()=>{
d=document;b=d.body;o=d.createElement('scri'+'pt');o.setAttribute('src','https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');o.setAttribute('type','text/javascript');b.appendChild(o);v=b.insertBefore(d.createElement('div'),b.firstChild);v.id='google_translate_element';v.style.display='none';p=d.createElement('scri'+'pt');p.text='function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");}';p.setAttribute('type','text/javascript');b.appendChild(p);
})()</script>`);
}

@runningcheese

真实原因: 自 2022 年 9 月 28 日起,谷歌翻译退出了**市场 https://hcfy.app/blog/2022/09/28/ggg
translate.google.com 和 translate.google.cn 域名DNS都解析到国外了,所以小工具用不了。

通过你粘贴的代码、截图、链接,获得如下信息:

  往网页中注入了,谷歌翻译的代码  ;

  注入代码方式:1、书签方式   ; 2、扩展方式

通过你粘贴的代码,翻译成容易看得懂的代码,如下

/*
  代码中
  %20 表示空格
  %22 表示双引号
 */
/**
 * translate.google.cn 退出大陆,解析到大陆的DNS解析已经不可用
 * translate.google.com 大陆就不可以使用
 */
{
    let script=document.createElement('script');
    script.setAttribute('src','https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');
    script.setAttribute('type','text/javascript');
    document.body.appendChild(script);

    let div=document.createElement('div');
    let element=document.body.insertBefore(div,document.body.firstChild);
    element.id='google_translate_element';
    element.style.display='none';

    let script_2 =document.createElement('script');
    script_2.text=`
            function googleTranslateElementInit () {
                new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");
            }
          `;
    script_2.setAttribute('type','text/javascript');
    document.body.appendChild(script_2);
}

//用于书签
javascript:{
  //上面的代码块
} void 0 ;

//用于v2版本扩展替换
(()=>{
    //上面的代码块
})() ;

要解决问题,挺简单的,手动指定DNS解析。

把如下两个域名,解析到大陆的谷歌服务器就行了!

 translate.google.cn 
 translate.google.com 
# 获得谷歌在大陆的IP地址,最简单办法:
   dig  fonts.googleapis.cn
   dig  fonts.gstatic.cn

拨测工具,拨测下面地址测试地址,获得谷歌在大陆的IP地址,选取IP,手动指定DNS解析


https://fonts.googleapis.cn/css?family=Google+Sans

https://fonts.gstatic.cn/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fBBc4.woff2

更多解决办法参考文档链接

@jingjingxyk
感谢你的耐心解答,还人各种详实的参考资料,让我感受到了开源社区般的温暖。

不过应该和翻译失效无关,

好像是小书签都失效了,我猜是不是 header editor 修改了使用语法,然后导致不可用了?

比如这个把小书签部分换成这个,还是没有效的。

javascript:function kZRjr(o){var a = document.links,i=a.length;while(i--){a[i].target='_blank';}i=o.length;while(i--){kZRjr(o[i]);}}kZRjr(top);

你贴的代码,格式化以后

javascript:function kZRjr(o) {
    var a = document.links;
    i = a.length;
    while (i--) {
        a[i].target = '_blank';
    }
    i = o.length;
    while (i--) {
        kZRjr(o[i]);
    }
}
kZRjr(top);

代码的主要功能: 替换网页中,链接打开方式,所有链接都用新标签页打开

(与之前的代码相比,这个代码块,连网络请求都没有,也没有向页面注入javascript脚本。当然可以用了。之前那个是因为注入脚本失败,失败原因:网络问题 )

header editor 代码并不复杂,UI做的很赞

@jingjingxyk
新年好!再次感谢你的回复!
可能是我表述得不太明确,我的意思是这样的。

原链接中 #152
在 Header Editor 中给网站注入小书签的方法是这样的:

if(detail.type === 'main_frame'){
  return val.replace(/(?=<\/body>)/, `<script>(()=>{
小书签代码
})()</script>`);
}

但我现在,这个代码失效了,也就是说不管小书签的代码是什么,Header Editor 都无法执行。
我猜是不是 Header Editor 换了其他的语法?

@jingjingxyk 新年好!再次感谢你的回复! 可能是我表述得不太明确,我的意思是这样的。

原链接中 #152 在 Header Editor 中给网站注入小书签的方法是这样的:

if(detail.type === 'main_frame'){
  return val.replace(/(?=<\/body>)/, `<script>(()=>{
小书签代码
})()</script>`);
}

但我现在,这个代码失效了,也就是说不管小书签的代码是什么,Header Editor 都无法执行。 我猜是不是 Header Editor 换了其他的语法?

用不了,是迟早的事 ,原因:请看这里: https://developer.chrome.com/blog/mv2-transition/

2022 年 1 月 17 日 :Chrome 网上应用店将不再接受新的 Manifest V2 扩展。 开发者仍可推送现有 Manifest V2 扩展的更新,但不得提交新的 Manifest V2 项目。

2023 年 1 月 :Chrome 浏览器将不再运行 Manifest V2 扩展程序。 开发人员可能不再向现有 Manifest V2 扩展推送更新。

manifest v3 扩展,为了用户安全,直接不允许这样使用。

firefox 目前不完全支持 manifest v3

以后要用的小书签代码有这些方式:
1. 浏览器书签注入代码
2. 使用扩展的content_scripts注入代码
3. 使用代理注入代码

@jingjingxyk
感谢你的消息,这真是一个让人意难平的消息。