为什么我得到这里输入意外结束:定义找不到错误的js语法
row.
append($("<a href='javascript:downloadFile('" + filename + "');'>" + filename + "</a>"));
row
,filename
是正常的字符串?
为什么我得到这里输入意外结束:定义找不到错误的js语法
row.
append($("<a href='javascript:downloadFile('" + filename + "');'>" + filename + "</a>"));
row
,filename
是正常的字符串?
来自四个单引号'
你有内部的问题追加所以它会被认为是href
属性为:
“的javascript:downloadFile(”
使用双引号例如:
$('body').append($("<a href=\"javascript:downloadFile('" + filename + "');\">" + filename + "</a>"));
希望这会有所帮助。
var filename = "file name test";
$('body').append($("<a href=\"javascript:downloadFile('" + filename + "');\">" + filename + "</a>"));
function downloadFile(file_name){
alert(file_name);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
尝试:
row.append($("<a href='javascript:downloadFile(\"" + filename + "\");'>" + filename + "</a>"));
您的原始代码产生以下字符串:
<a href='javascript:downloadFile('file1234.txt');'>file1234.txt</a>;
正如你看到的,第二个'结尾的字符串。所以你的href属性实际上是:
href='javascript:downloadFile('
这是行不通的。
这仍然容易受到XSS和HTML注入。 – Bergi
您所得到的错误是使用撇号作为HTML属性和JS字符串的分隔符。生成的源文件看起来像
<a href='javascript:downloadFile('123.example');'>123.example</a>
<!-- ^ ^ ^^ -->
而不是模板HTML没有任何转义,使用DOM! jQuery在这里使用非常方便。对于JS字符串,请使用JSON.stringify
逃吧:
row.append($("<a />", {
href: 'javascript:downloadFile(' + JSON.stringify(filename) + ');',
text: filename
}));
但更好的是,不要用javascript:
的URI!只需添加事件处理程序:
row.append($("<a />", {text: filename}).click(function(e) {
downloadFile(filename);
});
该代码原样没有任何问题。你需要显示更多的周边代码。你是否在运行时或加载/解析时得到错误? –
可能在周围代码的某处丢失括号或括号 – Jasch1
函数参数的逗号将关闭用于href的单个逗号。为href使用双引号并转义它们。 – ste2425