2012-02-28 31 views
5

Tôi đang sử dụng phần sau để trích xuất các biến từ một URL chứa trong một biến. Nó hoạt động tốt trong các trình duyệt hiện đại nhưng trong IE8 nó không thành công trên biến đầu tiên nhưng thành công trên biến thứ hai..split() không hoạt động như mong đợi trong 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:

Dưới đây là giải pháp làm việc ... http://jsfiddle.net/cssguru/B42tM/

+0

Tách có nhiều lỗi trong việc triển khai trên các trình duyệt web khác nhau. Một số là trường hợp cạnh, những người khác thì không. Tôi đề nghị bạn hãy xem xét những điều sau đây để xem liệu bạn có thể sao chép lỗi và sau đó sử dụng thông tin đó để đưa ra cách giải quyết hay không. http://blog.stevenlevithan.com/archives/cross-browser-split – michaelward82

Trả lời

6

Đỗ bạn cần sử dụng chia ở đây? Có thể bạn không chỉ cần sử dụng match:

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

Là trình duyệt có một số lỗi sử dụng chia tay với một regex http://blog.stevenlevithan.com/archives/cross-browser-split. Nếu bạn cần sử dụng split với trình duyệt chéo regex, bạn có thể xem xregexp là thư viện sửa các regex trên các trình duyệt.

+0

Cảm ơn sự giúp đỡ. –

2

Sử dụng p.match (regex) thay vì:

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

Cảm ơn sự giúp đỡ! –

0

Bạn có thể tìm thấy cả hai chiều với một trận đấu hoặc biểu 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 
*/ 
1

Đã có một số phản ứng có giá trị, nhưng bạn có thể quan tâm đến một chức năng tôi sử dụng để lấy GET thông số từ 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; 
}; 

Bạn có thể sử dụng nó như thế này.

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

var h = get("height",url); 
var w = get("width",url); 
Các vấn đề liên quan