Javascript 防止url从其他应用返回时刷新

Javascript 防止url从其他应用返回时刷新,javascript,jquery,html,Javascript,Jquery,Html,我从我的网页触发了一个条形码扫描应用程序,一旦该应用程序打开,我就可以扫描条形码并通过URL检索它 现在,URL所在的页面上有多个输入字段。我从URL中获取扫描的条形码,并将其放入输入字段中 问题是,当URL返回扫描的条形码时,它会刷新整个页面,因此会从输入字段中删除以前输入的所有值 那么,有没有一种方法可以在不刷新页面的情况下从URL检索条形码,以便输入字段保留其值,或者如何保留输入字段中输入的值 我不想进入方程的服务器端。请仅从前端提供可行的解决方案 下面是我创作的小提琴。看看这是否有帮助

我从我的网页触发了一个条形码扫描应用程序,一旦该应用程序打开,我就可以扫描条形码并通过URL检索它

现在,URL所在的页面上有多个输入字段。我从URL中获取扫描的条形码,并将其放入输入字段中

问题是,当URL返回扫描的条形码时,它会刷新整个页面,因此会从输入字段中删除以前输入的所有值

那么,有没有一种方法可以在不刷新页面的情况下从URL检索条形码,以便输入字段保留其值,或者如何保留输入字段中输入的值

我不想进入方程的服务器端。请仅从前端提供可行的解决方案

下面是我创作的小提琴。看看这是否有帮助

<input type="text" id="InputToOutput1" class="ScannedOutput"><br><br>
<input type="text" id="InputToOutput2" class="ScannedOutput"><br><br>
<input type="text" id="InputToOutput3" class="ScannedOutput"><br><br>
<a class="OpenScanner" href=""><button>Open Scanner</button></a>

像这样的方法应该会奏效:

如果您希望其他值被保存到已填充的条形码中,则需要将它们添加到返回url中

$.urlParam = function(name){
    var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
    return results[1] || 0;
}

$('.OpenScanner').click(function(){
    var url = window.location.href+"?code=%7BCODE%7D";
    $(this).attr({
        href:'http://zxing.appspot.com/scan?ret='+url+'&SCAN_FORMATS=UPC_A,EAN_13', 
        target:"nw"
    });
});
$(function() {
    alert($.urlParam('code'));
    $('#InputToOutput1').val($.urlParam('code'));
});

我不确定它为什么不能读取GET参数,但这也可能是一个JSFIDLE问题。最好在您的服务器上试用。

可能是扫描仪“按下”了enter键。您可能希望尝试添加一些代码以防止表单被发送。条形码扫描仪是否根据http get返回某些内容?是的,条形码扫描仪通过URL返回扫描的代码。您可以使用本地会话存储。当用户单击.OpenScanner时,将所有输入数据保存到本地存储并在页面上刷新如果存储中存在数据,只需重新填充字段,很简单,不应花费太长时间+Kristapsv这正是我最终使用的内容,但直到很晚才看到您的评论。如果你只是把它作为答案写下来,我会记下你的答案。再次感谢。我无法使用id及其返回结果失败[1]。我对它做了一些调整,但没有效果。你能在你的本地开发环境中测试一下吗?我不知道如何在jsfiddle上获取查询参数,因为它在iframe中运行。您还可以使用php将其插入页面。至少你现在在url中有条形码了,因为这以前不起作用。