Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
runningcheese opened this issue Dec 26, 2022 · 6 comments
Open

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

runningcheese opened this issue Dec 26, 2022 · 6 comments

Comments

@runningcheese
Copy link

runningcheese commented Dec 26, 2022

原问题是 #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>`);
}
@jingjingxyk
Copy link

jingjingxyk commented Dec 29, 2022

@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

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

@runningcheese
Copy link
Author

@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);

@jingjingxyk
Copy link

jingjingxyk commented Dec 31, 2022

你贴的代码,格式化以后

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做的很赞

@runningcheese
Copy link
Author

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

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

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

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

@jingjingxyk
Copy link

jingjingxyk commented Jan 1, 2023

@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. 使用代理注入代码

@runningcheese
Copy link
Author

runningcheese commented Jan 1, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants