2012-02-28 13 views
5

Używam następujących elementów do wyodrębniania zmiennych z adresu URL zawartego w zmiennej. Działa dobrze w nowoczesnych przeglądarkach, ale w IE8 zawodzi w pierwszej zmiennej, ale kończy się na drugiej..split() nie działa zgodnie z oczekiwaniami w 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:

Oto roztwór roboczy ... http://jsfiddle.net/cssguru/B42tM/

+0

Split ma różne błędy w implementacji w różnych przeglądarkach internetowych. Niektóre są przypadkami skrajnymi, inne nie. Proponuję zapoznać się z poniższymi informacjami, aby sprawdzić, czy można replikować błąd, a następnie użyć tych informacji do opracowania obejścia. http://blog.stevenlevithan.com/archives/cross-browser-split – michaelward82

Odpowiedz

6

Do musisz użyć podzielić tutaj? Nie można po prostu użyć match:

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

Jak przeglądarek posiada kilka błędów za pomocą split z regex http://blog.stevenlevithan.com/archives/cross-browser-split. Jeśli musisz użyć split z przeglądarką krzyżową, możesz spojrzeć na xregexp, która jest biblioteką, która naprawia wyrażenia regularne w różnych przeglądarkach.

+0

Dzięki za pomoc. –

2

Zastosowanie p.match (regex) zamiast:

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); 
+0

Dzięki za pomoc! –

0

można znaleźć oba wymiary z meczu lub exec wypowiedzi:

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 
*/ 
1

Odnotowano kilka ważnych odpowiedzi, ale może być zainteresowany w funkcji używać do pobierania GET parametry z adresów 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; 
}; 

Można go używać w ten sposób.

var url = 'http://sagensundesign.com?height=400&width=300'; 

var h = get("height",url); 
var w = get("width",url); 
Powiązane problemy