.split()在IE8中没有像预期的那样工作
我使用以下命令从变量中包含的URL中提取变量。它在现代浏览器中工作正常,但在IE8中,它在第一个变量上失败,但在第二个变量上成功。.split()在IE8中没有像预期的那样工作
var p = 'http://sagensundesign.com?height=400&width=300';
/* Get Height */
var h = p.split(/height=([0-9]+)/);
h = h[1];
if (!h) {h = 500};
alert(h);
/* Get Width */
var w = p.split(/width=([0-9]+)/);
w = w[1];
if (!w) {w = 800};
alert(w);
UDPATE:
这里是工作的解决方案...... http://jsfiddle.net/cssguru/B42tM/
待办事项你需要使用在这里分裂?你能不能只用match
:
var h = p.match(/height=([0-9]+)/)[1];
由于浏览器也有采用分体式用正则表达式http://blog.stevenlevithan.com/archives/cross-browser-split一些错误。如果您确实需要使用split
以及正则表达式跨浏览器,您可以查看xregexp这是一个修复跨浏览器的正则表达式的库。
感谢您的帮助。 – 2012-02-29 00:58:57
使用p.match(正则表达式),而不是:
/* Get Height */
var h = p.match(/height=([0-9]+)/);
h = h[1];
if (!h) {h = 500};
alert(h);
/* Get Width */
var w = p.match(/width=([0-9]+)/);
w = w[1];
if (!w) {w = 800};
alert(w);
感谢您的帮助! – 2012-02-29 00:58:36
你可以找到一个匹配或者exec表达两个维度:
var p = 'http://sagensundesign.com?height=400&width=300';
var siz=p.match(/((height|width)=)(\d+)/g);
alert(siz)
/* returned value: (Array)
height=400, width=300
*/
已经有一些有效的反应,但你可能有兴趣在我来撷取网址GET
参数的函数。
var get = function (name, url) { // Retrieves a specified HTTP GET parameter. Returns null if not found.
url = (typeof (url) === "undefined" ? window.location.href : url);
var regex = new RegExp("[?&]" + name + "=([^&#]*)");
var results = regex.exec(url);
var output = (results ? results[1] : null);
return output;
};
您可以像这样使用它。
var url = 'http://sagensundesign.com?height=400&width=300';
var h = get("height",url);
var w = get("width",url);
Split在各种Web浏览器上实现时存在各种错误。有些是边缘情况,有些则不是。我建议你看看下面的内容,看看你是否可以复制这个bug,然后使用这些信息来设计一个解决方法。 http://blog.stevenlevithan.com/archives/cross-browser-split – michaelward82 2012-02-28 21:05:46