例如,如果使用 decodeURI('%C4%97%')
它会触发并出错(是的,这是一个错误,专门用于测试):
URIError: malformed URI sequence ...('textarea#encode-url-result').val(decodeURI(jQuery('input#encode-url-input').va...
即使我把它放在 try-catch
中,它仍然会致命。有没有办法捕获它并显示警报?
更新:
这是我的代码,但我在控制台中仍然收到错误
try{
jQuery('a#encode-url-encode, a#encode-url-decode').click(function(){
if(jQuery('input#encode-url-input').val().length == 0)
showCustomAlert('<strong>Warning!</strong> Please enter value.');
var result = null;
if(jQuery(this).attr('id') == 'encode-url-encode')
result = encodeURI(jQuery('input#encode-url-input').val());
else if(jQuery(this).attr('id') == 'encode-url-decode')
result = decodeURI(jQuery('input#encode-url-input').val());
jQuery('textarea#encode-url-result').val(result);
});
}
catch(e){
alert(e);
}
最佳答案
这工作正常:
try {
decodeURI('%C4%97%')
} catch (ex) {
alert("ERROR DECODING URI");
}
演示: http://jsfiddle.net/P6EBN/
编辑:
从错误消息的外观来看,您正在尝试使用 jQuery 设置文本区域的值。
尝试这样的事情:
var newVal = "";
var toDecode = jQuery('input#encode-url-input').val();
try {
newVal = decodeURI(toDecode);
} catch (ex) {
// alert("ERROR DECODING URI");
}
jQuery('textarea#encode-url-result').val(newVal);
只是尝试将其拆分,以便您可以专门针对解码。
此外,在 id
选择器前面使用 tagName
是不必要的。只需使用这些选择器:
jQuery("#encode-url-input")
// and
jQuery("#encode-url-result")
关于javascript - 使用decodeURI时如何捕获错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980396/