Nach der Entdeckung - wie Edison! - eine Reihe von Möglichkeiten, wie dies nicht funktioniert, stieß ich schließlich auf diese Seite die besagt, dass das Hinzufügen von Lesezeichen über JS in Chrome ausdrücklich deaktiviert ist. Leider wird nicht erklärt, warum.
Update: Ich wurde von einem anderen SO-Nutzer gebeten, diese Antwort zu erweitern...
Meine Links und Schaltflächen für diese Funktion haben alle ein class="addbookmark"
die mit ihnen verbunden sind. Wenn der Benutzer-Agent Chrome ist, verwende ich etwas jQuery, um die Links zu deaktivieren und zu erklären, warum:
<script type="text/javascript" src="/scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/scripts/bookmark.js"></script>
<script>
title='A Label for this Bookmark, ie title of this page'; // for example, not really generated this way...
$jQuery(document).ready(function(){
// chrome does not permit addToFavorites() function by design
if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
$('.addbookmark').attr({
title: 'This function is not available in Google Chrome. Click the star symbol at the end of the address-bar or hit Ctrl-D to create a bookmark.',
href: 'javascript:return false'
})
.css({opacity: .25}); // dim the button/link
}
});
</script>
Und dann an anderer Stelle auf der Seite:
<td rowspan="2" class="noprint" style="width:24px;">
<a class="addbookmark" title="Save a Bookmark for this page"
href="javascript:addToFavorites(location.href,title)">
<img style="width:24px; height:24px; padding-top:2px;" src="/images/bookmark.gif"></a>
</td>
... was keineswegs perfekt ist, aber es scheint, dass die Möglichkeiten ziemlich begrenzt sind.
Die Version von jQuery ist nicht wichtig, und es liegt an Ihnen, ob Sie eine lokale Kopie oder einen Hot-Link zur Google-Version . bookmark.js
ist ziemlich genau wie der Code des Auftraggebers:
$ cat /scripts/bookmark.js
/* simple cross-browser script for adding a bookmark
source: http://stackoverflow.com/questions/992844/add-to-browser-favourites-bookmarks-from-javascript-but-for-all-browsers-mine-do
*/
function addToFavorites(url, name) {
if (window.sidebar) { // Mozilla Firefox
window.sidebar.addPanel(name, url, "");
} else if (window.external) { // IE
window.external.AddFavorite(url, name);
} else if (window.opera && window.print) {
window.external.AddFavorite(url, name);
} else {
alert("Sorry! Your browser doesn't appear to support this function.");
}
}
Ich hoffe, das ist nützlich.
0 Stimmen
Wollen Sie damit sagen, dass Sie versuchen, den Browser des Benutzers zu zwingen, ein Lesezeichen hinzuzufügen? Während ein Firefox- oder IE-Add-on das tun könnte, was Sie vorschlagen, hätte ein normales Skript auf einer Seite ganz sicher keinen Zugriff darauf.
0 Stimmen
Eigentlich ist die IE-Methode weit verbreitet (oft auf der Schaltfläche "Zu Favoriten hinzufügen"), es öffnet sich das Hinzufügen Dialog. Das ist eine schlechte Praxis, aber sie wurde sehr populär, als Internet-Anfänger (=> mit IE) nicht wussten, dass sie es selbst tun können.
3 Stimmen
Ja, das ist eine dumme Idee (wie "Zurück"-Links auf Seiten). Aber die Kunden sehen das oft auf anderen Websites und wollen es.
1 Stimmen
Hmm Ich frage mich, ob das
3 Stimmen
Warum gibt es nicht einen Hinweis, der besagt: "Verwenden Sie Strg+D, um diese Seite als Lesezeichen zu speichern"?