我有一个使用需要在ajax中工作的document.write的脚本,但是我无法找到使其工作的解决方案。这是通过ajax加载到页面中的脚本。
<script type="text/javascript">
example_widget_id = "example-1234";
example_widget_name = "registration";
example_widget_type = "example";
document.write(unescape("%3Cscript src='https://widgets.example.com/javascripts/example_widget.js' type='text/javascript'%3E%3C/script%3E"));
</script>
页面变为空白...这对于document.write和ajax来说是正常的。我试图找到一种方法通过innerHTML(或其他解决方案)添加它,但我没有运气。我看了这个帖子JavaScript Document.Write Replaces All Body Content When Using AJAX 但我似乎无法弄清楚如何使用我所拥有的工作。
感谢您提供的任何帮助。
更新: 脚本片段是第三方窗口小部件。通过将其插入到前端网页编辑器中来使用它,该编辑器允许用户将页面上的内容定位在他们想要的任何地方(通过ajax)。一旦定位,它也可以使用前端编辑器进行样式设置。当页面是用户想要的时候,他们可以保存布局并且前端编辑器被禁用(关闭)直到需要。当发生这种情况时,脚本(document.write)将在页面上加载并正常工作,而不受基于ajax的前端编辑器的干扰。 我在想是否有办法缓存document.write(html部分)的html结果,然后可以通过前端编辑器加载缓存版本。然后,一旦前端编辑器被禁用或关闭,我可以用原始脚本w / document.write替换小部件的html缓存版本。我玩了逻辑,我可以根据前端编辑器的状态交换出什么负载。我想我的问题是可以缓存或保存document.write内容吗?我想我可以处理之后如何使用它的逻辑。
答案 0 :(得分:0)
没有解决方案。在onload事件触发后,document.write()
替换了文档。它无法完成。
*注意:从技术上讲,如果您编写自己的Web浏览器,可以使其工作,因为您可以使浏览器不像所有其他浏览器一样,并在document.write()
上追加而不是替换。但你无法使用Chrome或IE或Firefox或Opera。
要获得快速解决方案,请改用.innerHTML
。要获得更好的解决方案,请学习DOM操作API(或使用DOM库)。