.split () не работает должным образом в IE8 - PullRequest
5 голосов
/ 29 февраля 2012

Я использую следующее для извлечения переменных из URL-адреса, содержащегося в переменной. Он отлично работает в современных браузерах, но в 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/

Ответы [ 5 ]

6 голосов
/ 29 февраля 2012

Вам нужно использовать сплит здесь? Разве вы не можете просто использовать match:

var h = p.match(/height=([0-9]+)/)[1];

Поскольку в браузерах есть некоторые ошибки, использующие разделение с регулярным выражением http://blog.stevenlevithan.com/archives/cross-browser-split. Если вам нужно использовать split с кросс-браузером регулярного выражения, вы можете посмотреть на xregexp , которая является библиотекой, которая исправляет регулярные выражения в браузерах.

2 голосов
/ 29 февраля 2012

Вместо этого используйте p.match (regex):

http://jsfiddle.net/B42tM/3/

/* 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);
1 голос
/ 29 февраля 2012

Было несколько действительных ответов, но вас может заинтересовать функция, которую я использую для получения GET параметров из URL.

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);
1 голос
/ 29 февраля 2012

Существует скрипт нормализации, который должен исправить несоответствия, которые вы видите. http://blog.stevenlevithan.com/archives/cross-browser-split

0 голосов
/ 29 февраля 2012

Вы можете найти оба измерения с выражением соответствия или 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
*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...