Javascript多用户访问混乱

时间:2015-03-26 06:49:50

标签: javascript jquery html

我尝试了一个我很困惑的场景。这可能是javascript 101,但我在这里错过了一点。

假设你有JS库,它定义了一个全局变量。它还有两个叫做setData和retunData的函数。我有一个单独的html,里面有一个脚本&head;头标记。此HTML文件导入库上方。

现在在html上我有一个带有两个按钮的文本字段。按钮是发送数据和查看数据。流程是,用户输入内容并单击发送数据按钮。在onClick上我获取文本值并将其传递给JS库setData函数,该函数将数据设置为全局变量。当我点击查看数据时,在它上面点击它将调用JS库的returnData函数,并且我将警告该值。

我的问题是,如果我在两个浏览器上运行我的html,并且从一个浏览器运行,如果我设置值" ONE" ,当我检索它时在同一个浏览器上说" ONE"。在第二个浏览器上,如果返回值,它应该是" ONE"因为该变量是全局的,并且值已由第一个浏览器设置。

但它可以作为两个请求。它不会覆盖全局变量值。我知道它应该是理想的情况。但为什么?那是一个全局变量吗?我希望我的问题很明确。

在jsLibrary上我有这个。

var checkVal;

        function setData(val){
        checkVal = val;
    }

    function viewData(){
        return checkVal;
    }

我的HTML就是这个。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <script src="js/jsLibrary.js"></script>
    <script src="js/jquery-2.1.1.min.js"></script>
    <title></title>

    <script type="application/javascript">


        function sendData(){
            var val = $("#idTextVal").val();
            setData(val);

        }

        function viewData(){
            alert(returnData());
        }

    </script>

</head>
<body>
<input type="text" id="idTextVal">
<input type="button" id="idConnect" onclick="sendData()" value="SEND">
<input type="button" id="idChecj" onclick="viewData()" value="VIEW">
</body>
</html>

1 个答案:

答案 0 :(得分:2)

  

为什么?那是一个全局变量吗?

它是全局的,但是对于这个特定的选项卡/页面实例。如果您在其他选项卡中打开相同的页面,javascript引擎将初始化所有变量,因为它不知道您有其他选项卡。

在您的情况下,您有多种选择。也许,最直接的是使用服务器端存储来保存状态。或者您可以使用简单的cookie / localStorage方法,它们也由同一来源的所有页面共享。我会更简单地使用WebStorage

function setData(val) {
    localStorage.checkVal = val;
}

function viewData() {
    return localStorage.checkVal;
}