相关疑难解决方法(0)

随机颜色发生器

鉴于此功能,我想更换颜色与颜色随机发生器.

document.overlay = GPolyline.fromEncoded({
    color: "#0000FF",
    weight: 10,
    points: encoded_points,
    zoomFactor: 32,
    levels: encoded_levels,
    numLevels: 4
});
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

javascript random colors

397
推荐指数
27
解决办法
54万
查看次数

可以使用innerHTML插入脚本吗?

我尝试使用innerHTMLa 将一些脚本加载到页面中<div>.看起来脚本加载到DOM中,但它永远不会被执行(至少在Firefox和Chrome中).有没有办法让脚本在插入时执行innerHTML

示例代码:

<!DOCTYPE html>
<html>
  <body onload="document.getElementById('loader').innerHTML = '<script>alert(\'hi\')<\/script>'">
    Shouldn't an alert saying 'hi' appear?
    <div id="loader"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

html javascript dom innerhtml

194
推荐指数
12
解决办法
18万
查看次数

动态添加的javascript与外部脚本不会被执行

所以这就是我们的场景......我们首先要做的是,我们附加一段javascript代码,将外部脚本添加到文档中,如下所示:

(function() {
     var e = document.createElement('script'); e.type = 'text/javascript'; e.async = true; e.src = 'http://blabla.com/script.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s);
})();
Run Code Online (Sandbox Code Playgroud)

然后script.js发生以下情况:

function ajaxCall() { 
    //... some script to send ajax request which calls createDiv() after success
   if (window.XMLHttpRequest){
      xmlhttp=new XMLHttpRequest();
   }
   else{
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function(){
      if(xmlhttp.readyState==4&&xmlhttp.status==200){
         createDiv(xmlhttp.responseText);
      }
   };
   xmlhttp.open("GET","http://blabla.com/api/");
   xmlhttp.send(); 
}
function parseResponse(response) {
    var parser = new DOMParser();
    var dom = parser.parseFromString(response, "text/html");
    return dom;
}
function createDiv(responsetext)
{
   var dom = …
Run Code Online (Sandbox Code Playgroud)

html javascript dom

12
推荐指数
1
解决办法
3437
查看次数

执行动态生成的Javascript

我正在阅读这个问题,接受的答案是:

通过设置元素的innerHTML属性添加的脚本不会被执行.

但是当我尝试<script>在以下代码中更改第一个标记的innerHTML时:

<script></script>
<script>
document.querySelectorAll("script")[0].innerHTML = 'console.log("Test")';
</script>
Run Code Online (Sandbox Code Playgroud)

我可以看到<script>正在执行的元素的注入代码(console.log()函数输出Test).

此外,如果我删除第一个空<script>标记(从而使第一个元素[0] 引用脚本本身),脚本在DOM中更改,但代码永远不会执行.

<script>
document.querySelectorAll("script")[0].innerHTML = 'console.log("Test")';
</script>
Run Code Online (Sandbox Code Playgroud)

什么促使这种行为?

html javascript dom properties innerhtml

6
推荐指数
1
解决办法
1180
查看次数

在通过AJAX加载的DOM中运行动态注入的javascript(尝试使用history.js ajaxify网站)

我有一个基本上有页眉,页脚和正文视图的Web应用程序.我正在使用history.js库和HTML5 pushstate来开发网站,但我遇到的一个问题是在javascript插入DOM时运行嵌入式javascript.

几乎我所有的javascript都包含在jQuery中(function(){...})(文档就绪加载器)

有谁知道处理这个问题的好策略?谢谢!

javascript dom history.js pushstate html5-history

5
推荐指数
1
解决办法
1万
查看次数

执行通过AJAX加载的Javascript

可能重复:
如何执行动态加载的JavaScript块?

我在这里看过很多像我这样的问题,但我没有找到适合我的答案.

我正在通过AJAX加载Code,还包括一个script包含Javascript 的Tag.正如我已经发现的,这个Javascript没有被执行.

我也发现eval()可以帮助我,但由于我是Javascript中的菜鸟而且只需要它一次,我不知道究竟应该放在哪里.

我的PHP脚本返回一个字符串,我将其与Javascript分开,将其放入页面的不同部分.这工作正常.其中一个部分包括:

<div id=\"fb-root\"></div> <script>(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return;js = d.createElement(s); js.id = id;js.src = \"//connect.facebook.net/de_DE/all.js#xfbml=1\";fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));</script>
Run Code Online (Sandbox Code Playgroud)

包括这样的:

document.getElementById("id").innerHTML=response1;
Run Code Online (Sandbox Code Playgroud)

response1拆分字符串后,我从上面放置代码的变量在哪里.任何人都能够以轻松的方式帮助我吗?

javascript php ajax

2
推荐指数
1
解决办法
2149
查看次数

非常有趣的jQuery加载行为,错误或解决方案?

我最近试图在某些脚本中找到一个错误,并在使用jQuery加载页面时发现了这个非常有趣的行为.

文件#1:Test1.htm

<div id="test"></div>

<script type="text/javascript">
$(document).ready(function(){
 $('#test').load('test2.htm #content',function(){
  alert('done loading!');
 })
})
</script>
Run Code Online (Sandbox Code Playgroud)

文件#2:Test2.htm

<div id="content">
howdy

<script type="text/javascript">
$(document).ready(function(){
 alert('hello #1');
})
</script>
<SCRIPT type="text/javascript">
$(document).ready(function(){
 alert('hello #2');
})
</SCRIPT>

</div>
Run Code Online (Sandbox Code Playgroud)

现在,当我运行Test1.htm时,我得到以下内容:

  • 你好#2警报
  • 来自test2.htm的howdy显示
  • 完成加载警报

正如您所看到的,唯一的区别是脚本标记大写为hello#2警报.显示hello#1警报的脚本永远不会被激活...

到目前为止,我已经在Firefox 3.55,IE 8.0.6001.18702和Chrome 3.0.195.33中对此进行了测试,结果相似.

在过去,我想从加载的内容中提取javascript,类似于这个SO问题.所以我的问题是,这是一个错误还是一个解决方案?


更新:正如下面的Jitter所述,如果Test2.htm在我加载的内容之外有脚本,则会发生同样的事情.

<div id="content">
howdy from test2.htm
</div>

<script type="text/javascript">
$(document).ready(function(){
 alert('hello #1');
})
</script>
<SCRIPT type="text/javascript">
$(document).ready(function(){
 alert('hello #2');
})
</SCRIPT>
Run Code Online (Sandbox Code Playgroud)

ajax jquery

1
推荐指数
1
解决办法
1004
查看次数