javascript - 我不理解的 2 个不同函数之间的 Javascript 行为
问题描述
我是一名 Java 开发人员,不精通前端技术,所以我希望这个问题不会太愚蠢。我在 html 页面上有 2 个内联脚本。
<script type="text/javascript">
function printReceipt(orderId,email) {
var printWindowSettings;
var browserUserAgent = navigator.userAgent;
if (browserUserAgent.indexOf("Chrome") > -1) {
printWindowSettings = "status=0,toolbar=0,menubar=0,height=500,width=1000,scrollbars=1";
} else {
printWindowSettings = "status=0,toolbar=0,location=0,menubar=0,height=500,width=1000,scrollbars=1,noopener=1";
}
var path = "/shop/printReceipt?orderid="+orderId;
if (email!=null)
path+="&email=" + email;
var docPrint = window.open(path, '_blank', printWindowSettings);
if (docPrint == null) console.log("window open returned null");
}
</script>
<script type="text/javascript">
bajb_backdetect.OnBack = function()
{
window.history.back=function(){
console.log("Back Button Pressed.")
document.location='/shop/shoppingCart.seam';
}
}
</script>
printReceipt()
onClick()
在锚标记的处理程序中调用。
<div class="pull-left" style="padding-bottom:20px;"><a href="#" onclick="javascript:printReceipt(apaOrder.orderId);" class="btn btn-primary-custom"><i class="fa fa-print" aria-hidden="true" style="padding-right:6px;"></i>Print Receipt</a></div>
我发现当printReceipt()
被调用时,以下脚本(用于管理后退按钮)也会被调用。所以当printReceipt()
被调用时,我的浏览器导航到/shop/shoppingCart.seam
.
为什么会这样?我该如何解决这个问题?
解决方案
可能单击的锚点会导致浏览器跟随链接。
鉴于这种:
<a href="" onclick="printReceipt(10, 'person@site.com')">click me</a>
单击该链接将运行该功能,然后页面将重新加载。您的背部检测脚本会注意到页面正在被卸载并做一些事情(显然)。
将其更改为:
<a href="" onclick="printReceipt(10, 'person@site.com'); return false">click me</a>
防止链接被跟踪。
推荐阅读
- r - ggplot 和 sf 用于覆盖两层多边形 (.shp)
- python - 尝试在另一个 df 中查找数据框列名称值,将其带回数据框
- c# - 寻找设计模式来自动化重复的任务,例如登录/注销
- javascript - 突出显示文本的搜索遇到特殊字符问题
- javascript - 设置数据表列宽(闪电社区)
- excel - 如何使用 Excel VBA 在 Outlook 电子邮件中嵌入图片?
- image - 如何在移动开发中优化图像大小?
- node.js - 哪个使用 React hooks 或 Redux
- javascript - Trim text in a cell of bootstrap table
- python - Python --> TypeError: 不支持的操作数类型 -: 'int' 和 'str'