2011-01-30 33 views
13

Tôi không biết đủ về javascript để tìm ra lý do tại sao dòng trong tập lệnh này bắt đầu "window.open ..." ném lỗi đối số không hợp lệ trong IE7- 8-9b. Hoạt động tốt trong Firefox và Webkit.window.open ném đối số không hợp lệ trong IE7-8-9b

(Tập lệnh được ghim với một onclick="share.fb()" trong liên kết html và bật lên một cửa sổ trình duyệt mới để chia sẻ tại FB và Twitter).

var share = { 
    fb:function(title,url) { 
    this.share('http://www.facebook.com/sharer.php?u=##URL##&t=##TITLE##',title,url); 
    }, 
    tw:function(title,url) { 
    this.share('http://twitter.com/home?status=##URL##+##TITLE##',title,url); 
    }, 
    share:function(tpl,title,url) { 
    if(!url) url = encodeURIComponent(window.location); 
    if(!title) title = encodeURIComponent(document.title); 

    tpl = tpl.replace("##URL##",url); 
    tpl = tpl.replace("##TITLE##",title); 

    window.open(tpl,"sharewindow"+tpl.substr(6,15),"width=640,height=480"); 
    } 
    }; 
+0

Bạn đã thử chuyển đổi các 'this.share' cho 'share.share' trong những' fb' và 'tw' chức năng? – sdleihssirhc

Trả lời

33

IE không cho phép dấu cách và các ký tự đặc biệt khác trong tên cửa sổ (đối số thứ hai). Bạn cần xóa chúng trước khi chuyển làm đối số.

Thay

"sharewindow"+tpl.substr(6,15) 

bởi

"sharewindow"+tpl.substr(6,15).replace(/\W*/g, '') 

để bạn kết thúc với

window.open(tpl,"sharewindow"+tpl.substr(6,15).replace(/\W*/g, ''),"width=640,height=480"); 

(đó là về cơ bản là một thay thế regex mà nói "thay thế mỗi chuỗi các phi aplhabetic nhân vật không có gì ")

sống bản demo here (cấu hình nếu cần thiết chặn popup của bạn)

+0

Làm cách nào để xóa không gian? Tôi không viết JS, chỉ tìm thấy nó. – markratledge

+0

Xem cập nhật câu trả lời. – BalusC

+0

Cảm ơn, nhưng vẫn là lỗi đối số không hợp lệ. Có một khoảng trống giữa hai dấu nháy đơn? – markratledge

Các vấn đề liên quan