javascript - 如何限制多次加载同一个js

标签 javascript php cakephp cakephp-2.0

我说的是 CakePHP 助手。我想使用 CakePHP 的帮助程序加载 JS 文件。

考虑一下 Helper 类的构造将加载所有必需的 JS 文件。

但是,我需要在单个 View 中多次调用该 Helper。因此,JS 文件可能会被多次调用。我只想加载这些 JS 文件一次。

谁能帮我解决这个问题?

这将是我的助手脚本

<?php
App::uses('AppHelper', 'View/Helper');

/**
 * @alias Mathjax Class for helper
 * @description This class is to define helper in cakephp.
 */
class MathjaxHelper extends AppHelper {

    /*
     * Constructor of the class.
     */
    function __construct(View $View, $settings = array()) {
        parent::__construct($View, $settings);
        //login to load all necessary JS files.
    }

    function create() {
        //this function will return the helper html
    }

}

最佳答案

使用 HtmlHelper::script

如果您使用HtmlHelper::script方法,使用 'inline' => false 来加载 js 文件,默认情况下它们将被包含一次

布局文件

要使用此方法,请确保在布局文件中回显 $scripts_for_layout 变量。例如:

<html>
    <head>
        ...
    </head>
    <body>
        ...

        <?php echo $scripts_for_layout ?>
    </body> 
</html>

查看文件

在您的 View 、元素或助手中 - 只需确保使用内联参数调用脚本方法即可:

<?php $this->Html->script('my', array('inline' => false)); ?>

通过这种方式,使用给定的 js 文件调用脚本方法的频率并不重要 - 它只会在生成的 html 输出中出现一次。

关于javascript - 如何限制多次加载同一个js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428064/

相关文章:

javascript - 根据另一个输入值更改输入值

javascript - 我如何检查已经请求的ajax数据?

javascript - Fancybox onClose 不起作用

php - 从 php 执行 adb

php - 具有多个条件的 MySQL SELECT

mysql - CakePHP 使用 MAX 进行查找并进行分组

javascript - ng-view 路由模板是否反射(reflect) ajax 请求导致的更改?

javascript - 你如何检测 three.js 中粒子系统中的粒子悬停?

javascript - filter_var 之后的 html_entity_decode 未按预期工作

jquery - 当 ajax 请求被中止时,我如何关闭 mysql 连接?