HeaderEditor
HeaderEditor copied to clipboard
[Question] 如何加载JS小书签?问题 2.0 版本
原问题是 https://github.com/FirefoxBar/HeaderEditor/issues/152
但好像已经年久失效,测试已经无效。
而且“修改响应体”在 Chrome 浏览器上也是失效的,无法添加。
有什么新方法吗?
感谢!!
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 新年好!再次感谢你的回复! 可能是我表述得不太明确,我的意思是这样的。
原链接中 https://github.com/FirefoxBar/HeaderEditor/issues/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 感谢你的消息,这真是一个让人意难平的消息。