爲什麼我得到這裏輸入意外結束:定義找不到錯誤的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