【问题标题】:javascript / jquery memory space between windows / tabs窗口/选项卡之间的javascript / jquery内存空间
【发布时间】:2017-10-05 16:11:52
【问题描述】:

我有一个页面会打开一个弹出窗口,内容如下:

<html>
    <head>

    <script>
    var fileValidationRules = {};
    fileValidationRules.cms_file_input = { exp: "\.(jpg|gif|xls|doc|ppt|pdf|zip)$", desc: "valid download file type", maxKb: 1048576, maxKbDesc: "1 Gb" };
    </script>

    <script src="upload.js?"></script>
    </head>

    <body>

        <form>
            <input type='hidden' id='cms_file_fragment_id' value='303'>

            <button id='cms_file_input_submit_button' type='button' class='btn btn-primary btn-block'> Upload file </button>

        </form>

    </body>
</html>

每次打开弹出窗口时,文件类型列表和隐藏表单字段值都不同,具体取决于单击的链接。

假设用户打开两个弹出窗口(似乎浏览器不允许在一个选项卡中这样做,但会从不同的主窗口选项卡打开两个弹出窗口)。在 file.js 中,我将使用 fileValidationRules 并执行以下操作:

var id = $("#cms_file_fragment_id").val();

问题是 - 我是否需要采取任何预防措施来确保我使用来自正确窗口的变量值?

【问题讨论】:

    标签: javascript jquery memory-leaks


    【解决方案1】:

    问题是 - 我是否需要采取任何预防措施来确保我使用来自正确窗口的变量值?

    没有。每个窗口都有自己的全局环境,与其他全局环境完全不同。

    如果窗口之间存在关系(父/子、打开器/打开等),有时可以通过(例如)parent.nameOfGlobalHere 访问另一个窗口中的一个窗口的全局变量显式 .但这是明确的,并且仅适用于作为全局对象属性的全局变量。 (它们都曾经是,但截至 ES2015,有些不是。)

    【讨论】:

    • 谢谢,我想就是这样,只是检查一下。