2008-09-20 29 views
7

Tôi đang sử dụng mã JavaScript sau:Một Firefox javascript đánh dấu vấn đề

<script language="JavaScript1.2" type="text/javascript"> 
function CreateBookmarkLink(title, url) { 
    if (window.sidebar) { 
     window.sidebar.addPanel(title, url,""); 
    } else if(window.external) { 
     window.external.AddFavorite(url, title); } 
    else if(window.opera && window.print) { 
     return true; } 
} 
</script> 

này sẽ tạo một bookmark cho Firefox và IE. Nhưng liên kết cho Firefox sẽ hiển thị trong sidepanel của trình duyệt, thay vì được hiển thị trong màn hình chính. Cá nhân tôi thấy điều này rất khó chịu và đang tìm kiếm một giải pháp tốt hơn. Tất nhiên, có thể chỉnh sửa dấu trang theo cách thủ công để có dấu trang không hiển thị trong bảng điều khiển bên cạnh, nhưng điều đó yêu cầu các bước bổ sung. Tôi chỉ muốn có thể để mọi người đánh dấu một trang (có rất nhiều thông tin GET trong URL được sử dụng để xây dựng một sơ đồ nhất định) một cách dễ dàng.

Tôi e rằng có thể không có Firefox hiển thị trang trong màn hình chính (vì Googling chủ đề này dẫn đến thực tế không có giá trị sử dụng), nhưng tôi có thể đã bỏ lỡ điều gì đó. Nếu bất cứ ai có ý tưởng nếu điều này là có thể, hoặc nếu có một cách giải quyết khác, tôi rất muốn nghe về nó.

+0

Nhân tiện, 'window.opera && window.print' dường như nhắm mục tiêu Opera> v6.
Và thuộc tính 'language' không được chấp nhận và không được khai báo: http://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.2.2 –

Trả lời

4

Tôi nghĩ đó là giải pháp duy nhất cho Firefox ... Tôi có chức năng tốt hơn cho hành động đó, nó hoạt động ngay cả đối với Opera và hiển thị thông báo cho các trình duyệt "không được hỗ trợ" khác.

<script type="text/javascript"> 
function addBookmark(url,name){ 
    if(window.sidebar && window.sidebar.addPanel) { 
     window.sidebar.addPanel(name,url,''); //obsolete from FF 23. 
} else if(window.opera && window.print) { 
     var e=document.createElement('a'); 
     e.setAttribute('href',url); 
     e.setAttribute('title',name); 
     e.setAttribute('rel','sidebar'); 
     e.click(); 
} else if(window.external) { 
     try { 
      window.external.AddFavorite(url,name); 
     } 
     catch(e){} 
} 
else 
     alert("To add our website to your bookmarks use CTRL+D on Windows and Linux and Command+D on the Mac."); 
} 
</script> 
+0

bạn là chính xác. không có cách nào để thêm trang vào dấu trang trong firefox mà không cần mở trang trong bảng điều khiển bên cạnh. –

+0

Mã này trong Opera chỉ chuyển hướng người dùng đến trang liên kết. –

+0

mã này sẽ bị hỏng nếu bạn có phần tử có id = "sidebar" như được đề cập ở đây: http://stackoverflow.com/questions/17747578/uncaught-typeerror-object-htmldivelement-has-no-method-addpanel – reikyoushin

0

Bạn có một trường hợp đặc biệt cho

if (window.sidebar) 

và sau đó một chi nhánh cho 'khác' - sẽ không firefox đất tại các chi nhánh đầu tiên và do đó chỉ làm tăng thêm bảng điều khiển?

+0

Ý tôi là - thay vào đó của văn bản 'else if (window.external)' làm một cái mới nếu như vậy bạn cũng có được nó được thêm vào như một bookmark –

0

Hojou,

Có vẻ như đó là cách duy nhất để thêm một bookmark cho Firefox. Vì vậy, FF cần phải hạ cánh trong chi nhánh đầu tiên để có bất cứ điều gì xảy ra ở tất cả. Tôi đã google thêm một số nhưng tôi thực sự nhận được ý tưởng này là không thể đúng địa chỉ trong FF ...

7

Đối với Firefox không cần phải đặt bất kỳ JavaScript nào để đánh dấu trang theo tập lệnh, chỉ một thẻ liên kết với tiêu đề rel = "sidebar" có thể làm chức năng này

<a href="http://www.google.com" title="Google" rel="sidebar">Bookmark This Page</a> 

tôi đã thử nghiệm nó trên FF9 và làm việc của mình tốt.

Khi bạn nhấp vào liên kết, Firefox sẽ mở một hộp thoại New Bookmark và nếu bạn muốn không tải bookmark này trên thanh bên rồi bỏ đánh dấu tải bookmark này trong thanh bên từ hộp thoại.

+0

+1 cảm ơn, điều này đã cứu tôi .. nhưng một cách tổng quát hơn có thể được tìm thấy ở đây: http://stackoverflow.com/questions/17747578/uncaught-typeerror-object-htmldivelement-has-no-method-addpanel – reikyoushin

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