Chrome虚拟机文件复制javascript

aor9mmx1  于 2023-02-06  发布在  Go
关注(0)|答案(4)|浏览(113)

我在开发一个网站时遇到了问题。我正在使用chrome来调试javascript函数。在我的一个页面上,我看到了以下内容:

您可以看到我自己的javascript文件search.js得到执行。这个文件有一个副本,名为VM1769。这个文件也执行相同的代码,因此搜索请求被发送了两次。
我四处搜索,看到有人通过禁用缓存(当DevTools打开时)解决了这个问题,但这对我不起作用。我尝试了另一个版本的Chrome,问题仍然存在。
有人有解决办法吗?

e1xvtsh3

e1xvtsh31#

我遇到了同样的问题,发现我真的包含了两次相同的JavaScript文件。所以Chrome将第二次执行显示为VM脚本对我来说是不合理的,但当我删除重复的include时,它就结束了。

svdrlsy4

svdrlsy42#

你好,我也得到了这个,这是导致有两个重复的选择在我的自动完成文本输入。我所做的只是创建一个全局标志,以了解脚本文件是否已经执行或没有。我知道这不是解决方案,但我只是想在这里分享,因为阻止执行的VM文件已经解决了我的问题,但我需要知道如何肯定地解决这个问题。

zmeyuzjn

zmeyuzjn3#

我遇到了这个问题。
对我来说,这是由于webpack注入了我的javascript文件的第二个示例进行调试。
删除最后一行(mode: "development")消除了重复的脚本。

const webpack = require('webpack');

module.exports = {
    entry: {
        a: [./scripts/xxx.ts"],
        b: ["./scripts/yyy.ts"],
        c: ["././scripts/zzz.ts"]
    },
    output: {
        // runtime asset location
        path: __dirname + "/dist/js/bundles",
        filename: '[name].js',
        library: "$",
        libraryTarget: "umd"
    },
    plugins: [
        new webpack.CleanPlugin(),
    ],
    module: {
        rules: [
            { test: /\.ts$/, use: 'ts-loader', exclude: /node_modules/ },
        ],
    },
    resolve: {
        extensions: ['.ts'],
    },
    mode: "development"
};
t1qtbnec

t1qtbnec4#

我遇到了同样的问题。在我服务器上的模板中,我把我的脚本标记放在了主内容容器的内部。

{% block content %}
    {% block js %}
        <script src='path/toJSFile.js'></script>
    {% endblock %}
{% endblock %}

这意味着渲染后我的脚本不在<body>标签的底部,而是在div.container内部,并且由于某种原因,渲染后我有两个重复的脚本,而不是一个。一个在div.container中,另一个在<body>标签的底部。
所以当我把脚本移出div.content容器后,我的脚本开始像我预期的那样运行,没有重复,没有双重获取请求。

{% block content %}
    ...
{% endblock %}

{% block js %}
    <script src='path/toJSFile.js'></script>
{% endblock %}

虽然我的答案只是django模板中的一个片段,但这种方法在其他情况下也应该可以使用。你一定要把你的脚本放在一个合适的地方(头部或身体),而不是任何div里面。

相关问题