Javascript 将脚本添加到包含document.write-won';不执行

Javascript 将脚本添加到包含document.write-won';不执行,javascript,jquery,html,netsuite,Javascript,Jquery,Html,Netsuite,我们正在使用一个使用ajax和jquery等的Web程序(Netsuite)。我想更改页面上的某些内容,并尝试使用document.ready和window.load在页面上加载外部脚本。我尝试在头部和身体中加载外部脚本。。但内容没有写出来。外部文件查找一个特定的div id,然后在此之前添加一些代码。它永远不会工作,因为页面本身是动态加载的,而我正在寻找的div在页面其余部分完成时加载。所以,窗口、加载等都不起作用 最后,我在程序本身中加载部分和片段,并尝试在其中简单地编写外部脚本文件。现在,

我们正在使用一个使用ajax和jquery等的Web程序(Netsuite)。我想更改页面上的某些内容,并尝试使用document.ready和window.load在页面上加载外部脚本。我尝试在头部和身体中加载外部脚本。。但内容没有写出来。外部文件查找一个特定的div id,然后在此之前添加一些代码。它永远不会工作,因为页面本身是动态加载的,而我正在寻找的div在页面其余部分完成时加载。所以,窗口、加载等都不起作用

最后,我在程序本身中加载部分和片段,并尝试在其中简单地编写外部脚本文件。现在,这一次外部文件中有一个简单的document.write,因此非常简单。换句话说,脚本位于页面正文中的HTML代码中间。(我知道这是一种很糟糕的方式,但我必须尝试一些方法让它发挥作用……)

根据firebug的说法,它将外部文件写入它应该位于的位置(检查!),firebug会向我显示该文件的内容(检查!),但是。。。它从不把它“写”到页面上

该文件仅包含以下内容:

document.write('<div id="shpblk" style="border:2px solid #ffa500;border-radius:7px;color:#000066;margin:5px;padding:5px;text-align:left;"><img border="0" width="12" height="12" src="/images/icons/store/icon_exclamation2c.gif">Hazardous conditions blahblah...  Potential delays and disruptions can be anticipated.</div>');
document.write('Hazardous conditions blahblah…潜在的延迟和中断是可以预见的');
我错过了什么

编辑:需要进一步澄清…:

情境:我必须能够时不时地在页面上放置一段html来创建一条消息

环境:我有一个页面,它首先加载页眉和页脚(在单独的文件中设置),然后加载页面的其余部分需要一秒钟左右的时间。据我所知,这个“页面的其余部分”是用特定的代码编写的,类似于javascript/jquery

我能做的是:编辑页眉和页脚的文件,并将javascript放入其中,对页面的其余部分进行修改。我可以访问一些包含“页面其余部分”的文件,但这是一大堆意大利面

我所尝试的: 由于我希望能够灵活地处理需要放入页面中的html,因此我更希望在另一个站点上创建一段javascript或html或其他内容,并让“环境”接收该代码。我可以用javascript或iframe来实现这一点。但由于它是一个安全区域(https),我认为最好使用javascript文件而不是iframe。所以

我创建了javascript文件,并在一个正常的环境中进行了测试,我确信它会工作。。它就像一个符咒。但当我在前面提到的“环境”中尝试这一点时,我遇到了一堵墙

javascript文件中有document.ready jquery语句,它将html div前置到页面上的现有div。 这样,它将加载页面并写入页面。。容易极了

然而。。由于首先加载页眉和页脚(其中包括外部脚本文件),然后加载页面的其余部分,因此脚本检查的div还不存在。所以我尝试了window.load而不是document.ready。同样的结果。 现在,它只会在我刷新页面时出现。因此,可能有一种方法可以让它刷新页面,但我只希望这是绝对的最后一次尝试

然后我试着看看是否可以通过更改脚本来解决这个问题,这样,它就不用使用document.ready,而只需要执行一个简单的javascript document.write语句。 然后我在页面的正文中间调用脚本(我把它放在页面中间的一个文件中)。我知道这不是我通常会做的事情,但无论如何我都想尝试一下。所以我想要这样的东西:

<div id="block1">
  <div id="block2">stuff here<div>
  <script type="text/javascript" src="https://someotherdomain.com/include.js" ></script>
  <div id="block3">stuff here<div>
  <div id="block4">stuff here<div>
</div>
<script type="text/javascript" src="include.js" ></script>

这里的东西
这里的东西
这里的东西
现在,当我运行这个程序时,我没有得到任何错误,但是没有对js文件的内容进行任何处理。在firebug中,它向我显示了该文件的内容。。所以我猜它正在被阅读。 但我不知道它为什么不运行

再一次。。回到“正常”实践:我尝试了window.load,因为这将在页面加载后运行语句。。就像我之前所说的,我感觉它以某种方式构建了页面(中间)的内容,我的脚本在此之前运行;它找不到它要预编译到的div(block3)。每当我在脚本中停止运行页面时,它所依赖的div就不存在了

我希望这是有意义的…

解决方案 要使外部脚本文件按预期工作,OP需要使用异步脚本标记加载它,如下所示:

<div id="block1">
  <div id="block2">stuff here<div>
  <script type="text/javascript" src="https://someotherdomain.com/include.js" ></script>
  <div id="block3">stuff here<div>
  <div id="block4">stuff here<div>
</div>
<script type="text/javascript" src="include.js" ></script>
(需要向应加载内容的页面添加目标DIV。)


详细信息

这个问题没有告诉我们外部文件是如何包含在页面上的。如果没有这些信息,就很难理解问题或提供解决方案。。。这可能就是为什么这个问题没有得到回答

然而,让我们假设脚本正在使用JavaScript或jQuery注入客户端的页面中。如果这是真的,那么如果没有正确的方法,它将失败

让我们看看将脚本添加到页面的一些方法:

这些脚本标记将全部失败,因为文件包含document.write语句,并且脚本是异步加载的

 <script type="text/javascript" src="include.js" async ></script>
 <script type="text/javascript" src="include.js" defer ></script> 
 <script type="text/javascript" src="include.js" async defer ></script> 
只要document.write在加载时执行,即不在稍后调用的函数内,此同步方法就可以工作。所以这是OP的一个可能的解决方案

 <script type="text/javascript" src="include.js" ></script>

您是如何将文档写入页面的?服务器端还是客户端?如果是客户端,它是文件的异步请求吗?是否存在导致写入失败的竞争条件?如果插入文档,会发生什么情况。手动写入页面(跳过外部加载)。这行吗?@Roberto I通过外部js“注入”