首页 > 解决方案 > 我不理解的 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.

为什么会这样?我该如何解决这个问题?

标签: javascript

解决方案


可能单击的锚点会导致浏览器跟随链接。

鉴于这种:

<a href="" onclick="printReceipt(10, 'person@site.com')">click me</a>

单击该链接将运行该功能,然后页面将重新加载。您的背部检测脚本会注意到页面正在被卸载并做一些事情(显然)。

将其更改为:

<a href="" onclick="printReceipt(10, 'person@site.com'); return false">click me</a>

防止链接被跟踪。


推荐阅读