开发者问题收集

Excel 文件下载在 Firefox 中不起作用,但在 Chrome 中起作用

2017-06-21
1304

我尝试在 onclick 事件上下载 excel 文件。它允许我在 chrome 中下载 excel 文件,但不允许在 Firefox 中下载。不确定问题是什么。我收到以下错误。

  ReferenceError: event is not defined

以下是我的 javascript 函数

function hyperlinkFn(){
var htmlTbl="";
var htmlTbl1="";
var string = event.target.parentElement.name;
var tempString=[];
var temp= new Array();
for(var i=0;i<string.length;i++){
    if(string[i]=="|"){
        temp.push(tempString);
        tempString=[];
    }else{
        tempString+=string[i];
    }
}

 userStoryModalRelease = temp[0];
userStoryModalPID = temp[1];
userStoryModalPrjName = encodeURIComponent(temp[2]);
userStoryModalTeam = encodeURIComponent(temp[3]);
userStoryAltId=encodeURIComponent(temp[4]);
userStoryModalStatus = temp[5];
userStoryModalTeam = userStoryModalTeam.replace(", ", ",");

var uri="getUserStoryDetails.htm?release=" + userStoryModalRelease + "&projectId=" + userStoryModalPID + "&projectName=" + userStoryModalPrjName +
  "&team=" + userStoryModalTeam + "&alternateId=" + userStoryAltId + "&view=" + storyView;
var encode = encodeURI(uri);
window.location = encode;

我在数据表中调用此函数的 HTML 代码

       {
                                title : "Total Points",
                                data : function(data, type, row, meta) {
                                    return data.totalSum+'<a name="'+ data.releaseNum +'|'+ data.projectId +'|'+ data.projectName +'|'+ data.team + '|'+ data.altId + '|total|'+'" onclick="hyperlinkFn()">'     
                                            + '<i class="fa fa-file-excel-o font-size-15 " title="Click here to export details " aria-hidden="true"></i></a>';
                                },
                                className : "center storypoint yellow_fill pos-rel"
                            } ],
2个回答

更改您的 click 绑定,如下所示,以使事件正常工作:

$(document).on('click', '.classname', function(event){
    var htmlTbl="";
    var htmlTbl1="";
    var string = event.target.parentElement.name;
    var tempString=[];
    var temp= new Array();
    for(var i=0;i<string.length;i++){
        if(string[i]=="|"){
            temp.push(tempString);
            tempString=[];
        }else{
            tempString+=string[i];
        }
    }

     userStoryModalRelease = temp[0];
    userStoryModalPID = temp[1];
    userStoryModalPrjName = encodeURIComponent(temp[2]);
    userStoryModalTeam = encodeURIComponent(temp[3]);
    userStoryAltId=encodeURIComponent(temp[4]);
    userStoryModalStatus = temp[5];
    userStoryModalTeam = userStoryModalTeam.replace(", ", ",");

    var uri="getUserStoryDetails.htm?release=" + userStoryModalRelease + "&projectId=" + userStoryModalPID + "&projectName=" + userStoryModalPrjName +
      "&team=" + userStoryModalTeam + "&alternateId=" + userStoryAltId + "&view=" + storyView;
    var encode = encodeURI(uri);
    window.location = encode;
})

注意: 从超链接中删除 onclick 事件并在超链接上添加 class 并将该类名替换为 .classname

Mahesh Singh Chouhan
2017-06-21

看起来这里已经涵盖了这一点: ReferenceError:Firefox 中未定义事件错误

WebKit follows IE's old behavior of using a global symbol for "event", but Firefox doesn't. When you're using jQuery, that library normalizes the behavior and ensures that your event handlers are passed the event parameter.

function hyperlinkFn(){ 需要变为 function hyperlinkFn( event ){

Aaron
2017-06-21