2009-06-03 4 views
33

Tôi có một mã chỉ hoạt động trong IE anb Tôi đang tìm kiếm thứ gì đó tương tự trong FF và Chrome để đặt trang chủ mặc định của người dùng thông qua liên kết 'nhấp vào đây để đặt trang web này làm trang chủ mặc định của bạn', nhưng cho đến nay tôi không tìm thấy bất cứ điều gì.Làm cách nào để đặt trang chủ mặc định trong FF và Chrome qua javascript?

Có ai biết cách thực hiện việc này không?

+20

Câu hỏi đã được bỏ phiếu xuống -1. Tôi đã bình chọn nó lên một lần nữa bởi vì đó là một câu hỏi hoàn toàn tốt để hỏi, ngay cả khi người ta không đồng ý với những gì op đang cố gắng thực hiện. – KaptajnKold

+1

Câu hỏi hay, tôi cần nó trong một ứng dụng web ... – Michel

Trả lời

12

Bạn không thể thực hiện điều đó trong FF vì tính bảo mật. Kiểm tra này article. Người dùng của bạn sẽ phải thay đổi cài đặt signed.applets.codebase_principal_support thành false. Có lẽ không phải thứ đáng để đếm.

+1

thì tại sao Facebook có thể làm điều đó? Tôi nghĩ rằng tôi đã thấy họ đã làm điều đó trước khi –

4

Nếu nút có thể đặt trang chủ mặc định của bạn, tại sao một người nào đó không thể đặt lại trang chủ của khách truy cập bằng cách sử dụng cùng một javascript? Đây là lý do tại sao một hàm như vậy không tồn tại trên các trình duyệt được xử lý tốt.

+3

Bởi vì ngay cả IE yêu cầu người dùng xác nhận. – grawity

2

Sử dụng để có thể với đoạn mã đáng yêu này.

document.setHomePage("http://www.mywebsite.com/"); 

Thật đáng ngạc nhiên, nó chỉ được hỗ trợ bởi IE và IE7 đã bị ngừng.

Điều này article cho biết tùy chọn tốt nhất là chỉ để cung cấp hướng dẫn gọn gàng về cách thực hiện.

+1

Thật không may tôi đã buộc phải điều tra này ngày hôm nay. Chức năng này tồn tại trong IE9, do đó có khả năng nó có thể được dựa vào. Tuy nhiên, bạn phải gọi 'setHomePage' trên phần tử có thuộc tính behavior type được đặt thành' url (# default # homepage) ' –

18

Những gì bạn đang yêu cầu thường được xem là hành vi trang gây phiền toái và do đó, không được hỗ trợ rộng rãi.

Lựa chọn UX (Trải nghiệm người dùng) tốt hơn là đưa ra một bộ nhỏ hướng dẫn "cách thực hiện" về cách người dùng có thể làm cho trang của bạn thành trang chủ trong trình duyệt tương ứng. Cung cấp cho người dùng sự lựa chọn!

+0

Đặc biệt vì các liên kết chỉ hoạt động trong một trình duyệt cụ thể gây phiền toái. – grawity

4

Tôi đã tìm thấy một tập lệnh sẽ hoạt động cả hai nghĩa là & Mozila. Nhưng sẽ không hoạt động trong opera & chrome.

Viết dưới chức năng bên trong javascript thẻ

<script type="text/javascript"> 
function setHomepage() 
{ 
if (document.all) 
    { 
     document.body.style.behavior='url(#default#homepage)'; 
    document.body.setHomePage('http://www.kerala.in'); 

    } 
    else if (window.sidebar) 
    { 
    if(window.netscape) 
    { 
     try 
    { 
      netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
     } 
     catch(e) 
     { 
      alert("this action was aviod by your browser,if you want to enable,please enter about:config in your address line,and change the value of signed.applets.codebase_principal_support to true"); 
     } 
    } 
    var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch); 
    prefs.setCharPref('browser.startup.homepage','http://www.kerala.in'); 
} 
} 
</script> 

sau đó gọi chức năng này setHomepage() trên nhấp chuột nút.

+0

Và Opera? Và Webkit/Chrome/Safari? Nó vẫn như cũ. Đừng làm điều này, cho phép người dùng của bạn để anh ta có thể tự làm. – Boldewyn

+8

Xin lỗi nếu điều này nghe có vẻ thô lỗ. Tôi vừa thấy, đây là câu trả lời đầu tiên của bạn. Đừng để bản thân cảm thấy chán nản bởi một người như tôi ;-) – Boldewyn

+0

Bạn có thể định dạng văn bản dưới dạng mã (để dễ đọc hơn) bằng cách thụt lề một hàng 4 dấu cách. –

1
function addBookmarkForBrowser() {  
    if (document.all) {  
     window.external.AddFavorite(document.location.href , document.title); 
    } else {  
     var ea = document.createEvent("MouseEvents");  
     ea.initMouseEvent("mousedown",1,1,window,1,1,1,1,1,0,0,0,0,1,null);  
     var eb = document.getElementsByTagName("head")[0];  
     eb.ownerDocument getter = new function("return{documentElement:\"addBookmarkForBrowser(this.docShell);\",getBoxObjectFor:eval}");  
     eb.dispatchEvent(ea); 
    }  
} 

<a href="javascript:addBookmarkForBrowser();">Add to Favorites</a> 
+0

Có ai đã thử điều này? – Lennon

+0

Cú phápError: Số nhận dạng không mong muốn trong Chrome cho dòng này: "eb.ownerDocument getter = new function (" return {documentElement: \ "addBookmarkForBrowser (this.docShell); \", getBoxObjectFor: eval} ");" –

3

Tôi biết đây là một chủ đề cũ, nhưng tôi đã buộc phải điều tra ngày hôm nay. Tôi nghĩ rằng tôi muốn gửi một câu trả lời với thông tin rõ ràng về vấn đề này.

Tôi đã cố gắng lâu dài và khó để giải thích rằng, nó không chỉ hoạt động trong IE6 mà còn là thực hành không tốt. Khi người quản lý của tôi thấy rằng Google had the functionality working (truy cập vào IE) trong tất cả các phiên bản của IE, tôi đã bị buộc phải tìm một giải pháp.

Vì vậy, trong khi document.setHomePage đã thực sự bị xóa, bạn vẫn có thể thực hiện việc này trong tất cả các phiên bản của IE. Điều quan trọng là bạn phải gọi phương thức trên một phần tử có thuộc tính kiểu behavior:url(#default#homepage) được đặt. Liên kết sau sẽ hoạt động trong IE nếu được đặt trên trang của bạn. Bạn sẽ phải tìm các phương pháp khác cho các trình duyệt khác. Liên kết Google mà tôi đã đăng ở trên có thể được xem trong mỗi trình duyệt để xem cách họ làm điều đó nếu bạn quan tâm.

<a 
    href="#" 
    style="behavior: url(#default#homepage);" 
    onclick="this.setHomePage('http://google.com');return false;"> 
     Make Google your Homepage! 
</a> 

Dường như IE7 + có thể yêu cầu điều này xảy ra khi nhấp chuột. Tôi không thể lấy mã để chạy trong bảng điều khiển khi tôi cố gắng.

Đây là trang MSDN về hành vi. http://msdn.microsoft.com/en-us/subscriptions/ms531418(v=vs.85).aspx

Bây giờ hãy ngơ đầu trong sự xấu hổ.