我有一个从Cordova项目移植的Web应用程序,除了IE之外,它在所有常见浏览器上都没有问题。到目前为止,我已经在Chrome,Chromium,Firefox,Safari和Edge中测试了这个应用程序。
只要将以下行添加到代码中,Internet Explorer中的问题就会返回错误,指出“'submit'未定义”。
usr_id = /\[usr_id\] => (.*?)\n/gum.exec(response);
我的猜测是,转义字符在某种程度上打破了语法,但玩弄它并没有解决我的问题。
以下背景中的违规部分:
function submit(){
uname = $('#txt-uname').val();
password = $('#txt-password').val();
login(uname,password);
}
function login(tc,pass){
$.ajax({
type: 'POST',
url: webserviceURL+'login.php',
data: {'tc':tc, 'password':pass},
complete: function(r){
response = r.responseText;
if (response.indexOf("") > -1){
localStorage.setItem("login", "true");
usr_id = /\[usr_id\] => (.*?)\n/gum.exec(response);
localStorage.setItem("usr_id", 'test');
}
}
});
}
答案 0 :(得分:2)
您不能将u
作为Internet Explorer中的unicode标志。它尚不支持。请将您的RegEx更改为:
usr_id = /\[usr_id\] => (.*?)\n/gm.exec(response);
此外,您可以通过检查以下内容的响应来检查支持:
RegExp.prototype.unicode
如果它支持浏览器,请使用u
标志,因为它会在没有它的情况下破坏原始逻辑。至少,通过此更改,它可以在Internet Explorer中正常运行。可以使用以下方法检查:
(new RegExp()).unicode
它可能会在Internet Explorer中返回undefined
,而在其他浏览器中则会返回false
。