所以,这很奇怪。
我们有2008 R2 server
和Win 7x64 dev
工作站运行经典ASP 。
网站中的一个页面,正好carat position 98301
,</div
正在插入到源中。请注意,它是不完全关闭div(</div>
)标记。只需</div
。
因此,基于修改页面的其他内容(用户权限,查询字符串值等),各种各样的东西都在破碎,因为它会四处移动。但始终在代码中的position 98301
处。并且始终只在这一页上。
我以前从未见过这个,也不知道在哪里弄清楚这是做什么的。我们有很多其他页面,有数十万个字符都很好。我们也有较短的页面。所有页面的所有IIS设置都相同,并且包括4Mb response buffer
和static and dynamic compression
两个启用(我在没有更改的情况下以两种方式进行了设置)。我们还有3个source control branches
,所有这些都发生在这一页上,仅在这一页上。
我们正在使用2 Win7x64 dev workstations
,1 Win2008R2 local test server
和1 Win2008R2 prod server
,他们都做同样的事情。
我已经移动了一些代码,删除了函数,在那里添加了新代码来循环Hello World
,无论我做什么,它总是只在</div
插入carat position 98301
}}
我想不出别的东西要测试。欢迎所有建议!谢谢!
答案 0 :(得分:0)
原来是htmlEncode()
和htmlDecode()
在页面上的组合,只是Chrome中的一个问题(目前是v39.x)。 Firefox和IE运行良好。在我们的页面上,我们有大约600行脚本块,htmlEncode()
和htmlDecode()
靠近块的顶部。通过将它们移动到</script>
标记之前,一切正常并且</div
未被注入。虽然我不是该页面的作者,但我可以看到htmlEncode()
和htmlDecode()
函数来自此处:HTML-encoding lost when attribute read from input field
此外,我们已经加载了Prototype(1.7.1)和jQuery(1.11.x),并且在Prototype之前将jQuery加载为var $j = jQuery.noConflict();
。将return $('<div/>')....
更改为return $j('<div/>')....
甚至return jQuery('<div/>')....
对情况完全没有影响。
我仍然不知道为什么会发生这种情况,但是已经解决了(现在,无论如何)将函数移动到脚本标记的底部。