“Aggiungi ai preferiti” con JavaScript in Opera [duplicato]
-
22-08-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Come per fare questo lavoro in Opera? Ho trovato questo pezzo di codice per Opera, ma non funziona per me:
function AddToFavorites(title, url) {
if (window.sidebar) { // Mozilla Firefox Bookmark
window.sidebar.addPanel(title, url,"");
return false;
}
else if( window.external ) { // IE Favorite
window.external.AddFavorite( url, title);
return false;
}
else if(window.opera && window.print) { // Opera Hotlist
var elem = document.createElement('a');
elem.setAttribute('href',url);
elem.setAttribute('title',title);
elem.setAttribute('rel','sidebar');
elem.click();
return false;
}
}
La console errore di Dragonfly è silenzioso, nessun errore sono in corso.
Soluzione
Se si insiste su di esso, quindi farlo senza collegamenti ridondanti generati in modo dinamico:
<a href="http://real.url.example.com" title="Bookmark me, pleaeease!"
rel="sidebar"
onclick="return !addToFav(this.href,this.title)">
ma per favore, basta non farlo.
Come utente Opera sarò grato per non spingere quel fad -. Posso scheda facilmente drag'n'drop ai preferiti bar / pannello / scopo di selezionare direttamente se scelgo di
Altri suggerimenti
Opera fa rispettare le stesse esigenze degli utenti-evento per consentire bookmarking, in tal modo il codice che avete non funziona, perché l'utente non ha fatto clic sul collegamento appena creato .
Hai bisogno di qualcosa di più simile a questo:
function AddToFavorites(obj, title, url){
if(window.sidebar){
// Mozilla Firefox Bookmark
window.sidebar.addPanel(title, url,"");
return false;
} else if(window.external){
// IE Favorite
window.external.AddFavorite( url, title);
return false;
} else if(window.opera && window.print){
//Opera Hotlist
obj.setAttribute('href',url);
obj.setAttribute('title',title);
obj.setAttribute('rel','sidebar');
obj.click();
return false;
}
}
chiamata con
<a href="#" onclick="AddToFavorites(this, 'your title', 'your url');">Bookmark This Page</a>
(sentitevi liberi di fare più discreto, volevo solo per indicare il requisito di utente-evento)
Il modo per ottenere "Aggiungi ai preferiti" lavoro collegamento in Opera 10 è quello di aggiungere dinamicamente un rel attributo per un collegamento
$('#add_to_favs').attr('rel','sidebar');
Il seguente codice funziona in Opera 8.54. Non funziona in 9.27 o 9.63 (le uniche due altre versioni che ho a disposizione per i test). In 9.27 e 9.63 semplicemente si naviga a Yahoo:
var url = 'http://www.yahoo.com/';
var title = 'Yahoo!';
var elem = document.createElement('a');
elem.setAttribute('href', url);
elem.setAttribute('title', title);
elem.setAttribute('rel', 'sidebar');
elem.click();
I sospettato che hanno tolto la possibilità di aggiungere un segnalibro / preferito, senza l'utente che avvia esso. Dal momento che si può già forzare il browser per navigare verso un nuovo URL utilizzando window.location
che, probabilmente, non è considerato una vulnerabilità DoS.
Il seguente funziona bene se l'utente fa clic sul link:
var url = 'http://www.yahoo.com/';
var title = 'Yahoo!';
var elem = document.createElement('a');
elem.setAttribute('href', url);
elem.setAttribute('title', title);
elem.setAttribute('rel', 'sidebar');
elem.appendChild(document.createTextNode('Add Bookmark'));
document.getElementsByTagName('body')[0].appendChild(elem);
Inoltre, window.external.AddFavorite(url, title);
non consente più non utente avviato oltre preferita in Internet Explorer 8 Beta 2. Tuttavia, se si include come l'evento onclick
di un link, funziona benissimo:
<a href="http://www.yahoo.com/" title="Yahoo!" onclick="window.external.AddFavorite(this.href, this.title);return false;">Add to Favorites</a>
Sia Firefox 2.0.0.18 e 3.0.4 attualmente sostegno non attivato dall'utente Bookmark Inoltre, ma non sarebbe stato un po 'sorpreso di vederli rimuoverlo in una versione futura pure.
Credo che è considerato cattiva forma e un po 'maleducata per cercare di forzare un visitatore di un sito web per aggiungere un Preferito / segnalibro senza di loro facendo clic su un link o di prendere un'azione esplicita che avrebbe farlo. Semplicemente visitando un sito web non è una ragione sufficiente per cercare di forzare i visitatori di aggiungere un Preferito / Bookmark ad esso.