小编0xC*_*URU的帖子

是否可以从HTML文件中的特定脚本标记引用函数或对象

想象一下,我们在HTML文件中有以下代码:

<script id='tag-1'>
  function foo(){
    alert("this is foo-1");
  }
</script>

<script id='tag-2'>
  function foo(){
    alert("this is foo-2");
  }
</script>

<script id='tag-3'>
  function foo(){
    alert("this is foo-3");
  }
</script>
Run Code Online (Sandbox Code Playgroud)

是否可以foo从带有id的脚本标记调用函数tag-2?我只是想知道是否有任何跨浏览器解决方案?多谢你们.


好的,我们有两个非常相关的提案 - 我标记为已接受答案的提案和另一个在此帖后面的评论 - @ dfsq建议的提案.谢谢大家!

html javascript

10
推荐指数
2
解决办法
251
查看次数

如何找到具有特定"type"属性值的<script>元素?

假设随机HTML文档中包含以下脚本标记:

<script id="target" type="store">
    //random JavaScript code
    function foo(){
       alert("foo");
    }
    foo();
</script>
Run Code Online (Sandbox Code Playgroud)

有谁能够解释为什么下面的表达式没有找到的所有元素script与价值store为他们的type属性.

var sel = $('#target script[type="store"]');
Run Code Online (Sandbox Code Playgroud)

jQuery版本:v1.7.2 Chrome版本:25.0.1364.172(在Debian Squeeze上运行)

jquery jquery-selectors dom-traversal

9
推荐指数
2
解决办法
4万
查看次数

在页面重新加载时由<canvas />内存自由分配

如何通过以下示例中的<canvas>释放已分配的内存:

<html>
  <head>
  </head>
  <body id="body">
    <canvas id="canvas" width=3000 height=2000/>
    <script>
      var canvas = document.getElementById("canvas");
      var ctx = canvas.getContext("2d");
      ctx.fillText("hao ar iu?", 20, 20);
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我尝试将var canvas设置为null(canvas = null),删除画布(删除画布)或动态创建画布并将其附加到"文档"根,然后将其删除:

<div onclick=reload()>CLICK TO RELOAD PAGE</div>
<script>
  function reload(){
    body.removeChild(canvas);
    location.reload();
  }
</script>
Run Code Online (Sandbox Code Playgroud)

没有什么变化,分配的内存越来越大,每个页面重新加载,直到我的浏览器占用太多的CPU RAM内存.有时浏览器会崩溃.垃圾收集器有时会清除一些变量.但它占用了太多的内存.我使用Chrome版本25.是否有任何方法可以释放<canvas>内存或引发早期垃圾收集?

javascript html5 memory-leaks

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

PHP:解析postgre的默认字符串时间戳格式

我有问题以通用方式解析以下两个时间戳字符串?

$timestamp1 = "2013-10-15 19:05:18.756932+03";
$timestamp2 = "2013-10-15 19:05:18.756932+03:00";
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个,但它返回 false

$datetime = DateTime::createFromFormat('Y-m-d HH:MM:SS frac "GMT"? [+-] hh ":"? MM?', $timestamp1);
$datetime = DateTime::createFromFormat('Y-m-d HH:MM:SS frac "GMT"? [+-] hh ":"? MM?', $timestamp2);
Run Code Online (Sandbox Code Playgroud)

怎么了?谢谢.

PS我试过这个'Y-m-d HH:MM:SSfrac"GMT"?[+-]hh":"?MM?',这个''Y-m-d HH:MM:SS[0-9]+"GMT"?[+-]hh":"?MM?'和这个'Y-m-d HH:MM:SS [0-9] "GMT"? [+-] hh ":"? MM?'但总是失败.

php postgresql

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

Yii:如何呈现部分动态JavaScript小部件

我在html文件中动态重新加载区域时遇到问题.我使用基于Ajax的方法.我成功更新了我感兴趣的区域(HTML div标签),但每次我进行更新时,都会下载并处理相同的JavaScript以及替换的html代码,这会消耗时间.我希望浏览器在AJAX更新时重复使用上次下载的JavaScript文件,而不是一次又一次地获取相同的内容,这会导致过多的开销.我的意思是说?比方说,我有一个Button Widget具有widget.js连接到它的JavaScript.此JavaScript将负责按钮单击时触发的事件.每次单击此按钮时,该事件将"拍摄"AJAX请求,并且HTML页面上的特定区域会更新,并widget.js在必要时下载.我想这widget.js只是第一次下载,但目前它在每个AJAX请求下载.我注意到每次请求提到的JavaScript文件时,附加的查询参数_都是随机值.

widget.js?_=1374504824837
Run Code Online (Sandbox Code Playgroud)

如何禁用此随机参数?

我的index.php

<p>
    <div id='widget-container'>
        <?php 
            $this->renderPartial('widget');
        ?>
    </div>
</p>
Run Code Online (Sandbox Code Playgroud)

我的控制器

public function actionWidget()
{
    $this->renderPartial('widget',array(),false,true);
}
Run Code Online (Sandbox Code Playgroud)

我的widget.php

<?php
    $url = 'widget';
    $update = '#widget-container';
    $this->widget('ext.bootstrap.widgets.TbButton',
    array('label' => 'Widget',
        'size' => 'medium',
        'buttonType' => 'ajaxButton',
        'url' => $url,
        'ajaxOptions' => array('type' => 'POST',
                  'update' => $update,
                  'cache' => false),
        'htmlOptions' => array('id' => 'widget'.uniqid())
    )
    );
?>
Run Code Online (Sandbox Code Playgroud)

php ajax yii

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

jQuery API:.ajaxStart()似乎在Chrome浏览器中不起作用

任何人都知道为什么这个代码在Chrome浏览器中不能很好地工作:

jQuery(function($){
  $(document).ajaxStart(function() {
    alert('ajax request sent');
  });
});
Run Code Online (Sandbox Code Playgroud)

我只在Chrome v.25上试过这个.取样的页面上的几个ajax请求之一运行良好,但其余的不想响应.我在PHP上使用Yii框架,它生成了大量我不太熟悉的JavaScript代码.是否有可能某些框架生成部分或先前从我自己的代码中引入以干扰上面的示例?

我也试过.on('ajaxStart', myfunction),.delegate('ajaxStart', myfunction),.bind('ajaxStart', myfunction)

注意:一旦加载页面,就会执行上面的代码示例.我点击一个按钮发送我的ajax请求.加载页面后,我会点击按钮.

注意2:我包含jQuery以及bootstrap JavaScript库.

jquery google-chrome

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