js 方面是新手,最近使用该方法以及 replace 来进行字符替换。
以下是案例,不是实际内容
html <div id="jianjie">我是谁?</div>
我使用
document.getElementById("jianjie").innerHTML=document.getElementById("jianjie").innerHTML.replace(/Who/g,"whom")
做字符替换。
场景是:wordpress 站安装了使用谷歌接口的插件( GTranslate )来进行全站翻译,但是有个别词翻译不对,也没修正的接口。翻译是有延迟,也就是每次打开是简体中文,需要等会才变成英文。我打算在网页加载后,每隔 5 秒钟(或延迟 10 秒)运行一次以上脚本。
出现错误是:脚本执行的时候,页面其实已经翻译为英文,但是脚本报错,浏览器的控制台提示“Uncaught SyntaxError: Unexpected token '<' ”另外点击后面的 debugger ,显示获取到的内容还是中文的,并没更新为英文状态的。
此时如果控制台运行以上命令是可以正确执行,但是脚本在页面里执行就会有以上问题
有大神分析下吗?或者如何解决?
1
honkew 2023-01-31 14:44:07 +08:00
语法错误 '<'
|
2
NoOneNoBody 2023-01-31 14:49:42 +08:00
js 都忘光了,就问一句:是 gb2312/gbk 还是 utf-8 ?前者可能会有 /转义问题
|
3
v2lhr 2023-01-31 14:55:57 +08:00 1
请求的资源文件的 content-type 错误吧
|
4
sanxineryong 2023-01-31 14:59:18 +08:00
貌似报错不是这段脚本引起的,或者先试着解决报错?
|
6
SingeeKing 2023-01-31 15:04:10 +08:00
这个看上去是 json 解析导致的,常见的就是对一个应该返回 json 的接口返回了 <!html ...
|
7
yws112358 OP @v2lhr #3
@SingeeKing #6 你们说的是 翻译插件的问题吗? 浏览器的 js debugger 里显示 获取的是 未翻译前的中文内容。实际此时页面已经被翻译成英文了。 推迟运行的 js 就报错。 但是如果在 console 里执行 就正常运行 并成功替换了 |
8
corcre 2023-01-31 15:13:11 +08:00
给你个简单的检测方法, 你把这行注释掉看看还报错不...
|
9
nitmali 2023-01-31 15:36:09 +08:00
请发完整代码
|
10
codehz 2023-01-31 15:36:51 +08:00 via iPhone
你这个脚本,不会是返回了 html 了吧,是不是一个 404.html((
另外可以通过 class="notranslate" translate="no" 的方式防止元素被翻译(不确定对自己嵌入的有没有效果) |
12
imagecap 2023-01-31 16:55:03 +08:00
settimeout( function() {xxxx}, 1000 );
应该是语法问题 |
13
cpstar 2023-01-31 17:03:37 +08:00
679 行
应该是 setTimeout(function(){document.getElementById("jianjie").innerHTML=document.getElementById("jianjie").innerHTML.replace(/Xilu/g,"Genglu");},10000) 把你那条语句包装成匿名函数 |
14
yws112358 OP |
16
cpstar 2023-01-31 20:41:07 +08:00 1
15# 你怎么定位错误的翻译?是知道在哪,还是每次都需要程序判定?
页面上不是有 jQuery 么,上 jQuery 去遍历 DOM 省点事。 setTimeout(function(){ jQuery("#jianjie").html(jQuery("#jianjie").html().replace(/Xilu/g,"Genglu")); }, 10000); 或者干脆来一个狠的: jQuery("body").html(jQuery("body").html().replace(---)); |