我遇到了一个问题,即html.ts文件在某些页面上运行两次,即使在浏览器中关闭了AJAX也是如此.它似乎不是一个映射问题,因为即使我注释掉所有映射,它也会执行此行为.该页面在Chrome浏览器中看起来不错.
小智 6
如果没有通过AJAX或其他任何东西插入页面,那么这可能是由于格式错误的html.如果源外有任何内容<head>,<body>或者<html>,Gokogiri将外围标记包装在单独的<html>标记中.然后由于有两个开始和结束<html>标记,html.ts将运行两次.解决方案是在我们告诉Gokogiri如何处理它之前捕获传入的页面,并通过确保所有内容都包含在<body>标记中来修复损坏的html .
在项目文件夹的scripts/main.ts中,之后
match($content_type) {
with(/html/) {
Run Code Online (Sandbox Code Playgroud)
添加这个,删除</body>和</html>标签并将它们追加到最后:
# wrap markup that is outside the body so tritium doesn't get applied twice
replace(/\<\/body\>/,"")
replace(/\<\/html\>/,"")
append("</body> </html>")
Run Code Online (Sandbox Code Playgroud)
这应该确保只有一个开放一个结束<html>标记传递给Gokogiri并且html.ts只运行一次,因为我们想要它!
源可能在Chrome中看起来不错,因为当Tritium代码操作页面时,它会将两个<html>标签中的内容移动到第一个标签中,当Chrome收到页面时,它将擦除第二个空<html>标签.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |