javascript - Yii2-在控制台中获取类型和引用错误

标签 javascript jquery yii2 yii2-advanced-app

我正在开发 Yii2。在我的控制台中,我收到两种类型的错误。

  1. Uncaught TypeError: Cannot read property 'fn' of undefined at bootstrap-show-password.min.js:6 at bootstrap-show-password.min.js:6

错误行 bootstrap-show-passwordvar i=e.fn.password;e.fn.password=function()......}(window.jQuery);

  • Uncaught ReferenceError: $st is not defined at common.js:263

  • 错误行 commonif ($st && $stats &&blockingRules && setupUser && !window.forceReload)..

    下面是我在 main.php 文件中的声明

    <?php $this->beginPage() ?>
    <!DOCTYPE html>
    <html lang="<?= Yii::$app->language ?>">
    <head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?= Html::csrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
    <!-- Ionicons -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-show-password/1.0.3/bootstrap-show-password.min.js"></script>
    </head>
    <body class="hold-transition skin-blue sidebar-mini">
    <?php $this->beginBody() ?>
    

    更新1

    我的main.php中的一些脚本

    <script>
    $(document).ready(function () {
        $('.listing-img').on('click', function () {
            $('#modal-img-tag').attr('src', $(this).attr('src'));
            $('#image-view-modal').modal();
        });
    });
    </script>
    <script>
    var data = [];
    <?php foreach(\app\models\Roles::toArrayList() as $k=>$v){?>
    data.push({id:<?=$k?>, text: '<?=$v?>'});
    <?php } ?>
    if($(".select2-selection").length>0) {
        $(".select2-selection").select2({
            data: data,
            allowClear: true,
            placeholder: "Select a Role",
            multiple: true
        });
    }
    </script>
    <script src="https://cdn.rawgit.com/MrRio/jsPDF/master/dist/jspdf.min.js"> 
    </script>
    <div id="pdf-editor"></div>
    </body>
    </html>
    <?php $this->endPage() ?>
    

    我已经为 yii2/yii 搜索了这些内容,但找不到任何合适的解决方案

    如何消除这些错误?

    任何帮助将不胜感激。

    最佳答案

    在您的布局文件中,您将包含 bootstrap-show-password.js使用 <script> 文件标签。

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-show-password/1.0.3/bootstrap-show-password.min.js"></script>
    

    这也在 <head> 内部分,而默认情况下,如果您使用 AssetManagerregisterJsFile它将把脚本添加到页面底部 </body> 之前标签,以及 bootstrap-show-password.js应在 jquery 之后加载和bootstrap js 库而不是之前的库,请参阅 bootstrap-show-password 演示中的以下序列

     <script src="assets/jquery.min.js"></script>
     <script src="assets/bootstrap-v2/js/bootstrap.js"></script>
     <script src="bootstrap-show-password.js"></script>
    

    这就是您收到错误的原因

    Uncaught TypeError: Cannot read property 'fn' of undefined at bootstrap-show-password.min.js:6 at bootstrap-show-password.min.js:6

    您的 jquery 和 bootstrap 正在加载到页面底部而不是头部。

    您应该将脚本标记替换为

    $this->registerJsFile('https://cdnjs.cloudflare.com/ajax/libs/bootstrap-show-password/1.1.2/bootstrap-show-password.min.js',[
        'depends'=> \yii\bootstrap\BootstrapAsset::class
    ]);
    

    以便在 Bootstrap 和 jquery 库之后加载该文件。

    关于其他错误

    Uncaught ReferenceError: $st is not defined at common.js:263

    它与您的 Chrome 浏览器中安装的某些扩展程序有关,查看您提供的链接时,它会搜索具有该名称的 Chrome 扩展程序,您可以尝试使用任何其他浏览器(如 FF 或 IE),因为演示网址不会加载该特定的使用 chrome 时为我编写的脚本,文件 common.js 都没有包含在布局或 AssetManager 中的任何位置文件。

    关于javascript - Yii2-在控制台中获取类型和引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52050318/

    相关文章:

    javascript - 如何确定此 javascript 的功能

    javascript - 带有 json 提要输入的简单 d3.js 图形

    javascript - 无法在 Chrome 中获取图像的宽度

    javascript - jQuery - 给定一个 json 响应,其数组如 : [1, 1] [2, 3], [5,1] 如何迭代?

    javascript - 如何检查没有元素剩余?

    javascript - 如何在 javascript 中创建带有输入掩码的表单

    mysql - 如何将变量从javascript传递给yii2函数

    Phpstorm 和 Yii2 高级模板

    php - Yii2 中的默认时区是什么?

    jquery - Primefaces 数据表行编辑器 : only permit one row editing