javascript - 无法让 document.write 与 ajax 一起使用

标签 javascript jquery ajax innerhtml document.write

我有一个使用 document.write 的脚本,需要在 ajax 中工作,但我无法找到使其工作的解决方案。这是通过 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 内容可以被缓存或保存吗?我想我可以处理之后如何使用它的逻辑。

最佳答案

没有解决方案document.write() 在 onload 事件触发后替换文档。这是不可能的。

你无法让它工作*。

*注意:从技术上讲,如果您编写自己的网络浏览器,则可以使其工作,因为这样您就可以使您的浏览器的行为不像所有其他浏览器一样,并在 document.write( 上附加而不是替换) )。但您无法使其与 Chrome、IE、Firefox 或 Opera 一起使用。

<小时/>

要获得快速解决方案,请改用 .innerHTML。为了获得更好的解决方案,请学习 DOM 操作 API(或使用 DOM 库)。

关于javascript - 无法让 document.write 与 ajax 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172904/

相关文章:

javascript - 使链接在点击时动态激活

jquery - 如何让固定的 child 和 parent 玩得开心

使用ajax的php-mysql登录系统

jquery - 提交后关闭 Bootstrap 模式

javascript - Ajax 工具包 CascadingDropDown onload 事件?

javascript - 无法阻止引荐垃圾邮件

javascript - jquery mobile 设置单选按钮组的选定值

javascript - 制作一个jquery函数来返回元素

javascript - 使用 css 颜色和 jquery 的 iO 上的触摸菜单不起作用

javascript - 如何使用jquery限制文本框中前导和尾随空格的使用?