javascript - los - exportar marcadores chrome android
Agregar a favoritos/marcadores del navegador desde JavaScript pero para todos los navegadores(el mío no funciona en Chrome)? (6)
Acabo de probar este script en:
Ganar
- IE 6.0, IE 7.0, IE 8.0
- Firefox 2.0, Firefox 3.6.3
- Safari 3.1.2, Safari 3.2.3
- Opera 9.00
- Google Chrome 8.0
Mac
- Firefox 3.6.13
- Safari 5.0.1
- Opera 11.0
Google Chrome 8.0
/* * Copyright 2010 by GlamThumbs Team. * * How To Use The Script: * add to your page this code between inside head tags * <script type="text/javascript" src="ATBookmarkApp.js"></script> * add anchor with void href like this: * <a href="javascript:void(0)" onClick="return BookmarkApp.addBookmark(this)">bookmark us</a> * */ ATBookmarkApp = function () { var isIEmac = false; /*@cc_on @if(@_jscript&&!(@_win32||@_win16)&& (@_jscript_version<5.5)) isIEmac=true; @end @*/ var isMSIE = (-[1,]) ? false : true; var cjTitle = document.title; var cjHref = location.href; function hotKeys() { var ua = navigator.userAgent.toLowerCase(); var str = ''''; var isWebkit = (ua.indexOf(''webkit'') != - 1); var isMac = (ua.indexOf(''mac'') != - 1); if (ua.indexOf(''konqueror'') != - 1) { str = ''CTRL + B''; // Konqueror } else if (window.home || isWebkit || isIEmac || isMac) { str = (isMac ? ''Command/Cmd'' : ''CTRL'') + '' + D''; // Netscape, Safari, iCab, IE5/Mac } return ((str) ? ''Press '' + str + '' to bookmark this page.'' : str); } function isIE8() { var rv = -1; if (navigator.appName == ''Microsoft Internet Explorer'') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[/.0-9]{0,})"); if (re.exec(ua) != null) { rv = parseFloat(RegExp.$1); } } if (rv > - 1) { if (rv >= 8.0) { return true; } } return false; } function addBookmark(a) { try { if (typeof a == "object" && a.tagName.toLowerCase() == "a") { a.style.cursor = ''pointer''; if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) { window.sidebar.addPanel(cjTitle, cjHref, ""); // Gecko return false; } else if (isMSIE && typeof window.external == "object") { if (isIE8()) { window.external.AddToFavoritesBar(cjHref, cjTitle); // IE 8 } else { window.external.AddFavorite(cjHref, cjTitle); // IE <=7 } return false; } else if (window.opera) { a.href = cjHref; a.title = cjTitle; a.rel = ''sidebar''; // Opera 7+ return true; } else { alert(hotKeys()); } } else { throw "Error occured./r/nNote, only A tagname is allowed!"; } } catch (err) { alert(err); } } return { addBookmark : addBookmark } }();
¿Alguien puede ayudar, estoy usando lo siguiente para agregar un marcador a IE y Firefox pero no funciona en Chrome y no recibo mi mensaje de error diciendo "no compatible" tampoco ..
Alguien sabe de una buena secuencia de comandos para admitir TODOS los navegadores o al menos para volver y decirme que no es compatible, tengo acceso a jQuery, tal vez hay alguna forma de detectar el navegador
Actualmente estoy usando esto y funciona para IE y Firefox pero no para Chrome
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(''not supported'');
}
Después de descubrir, ¡como Edison! - De varias maneras, esto no funciona, finalmente encontré esta página que dice que agregar marcadores a través de JS está explícitamente deshabilitado en Chrome. Lamentablemente, no explica por qué.
Actualización: Otro usuario de SO me pidió que ampliara esta respuesta ...
Mis enlaces y botones para esta función tienen una class="addbookmark"
asociada a ellos. Cuando el agente de usuario es Chrome, uso jQuery para deshabilitar los enlaces y explicar por qué:
<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>
Y luego en otro lugar en la página:
<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>
... que de ninguna manera es perfecto, pero parece que las opciones de uno son bastante limitadas.
La versión de jQuery no es importante, y depende de usted si desea una copia local o acceso directo a la versión de google . bookmark.js
es exactamente igual al código de OP:
$ cat /scripts/bookmark.js
/* simple cross-browser script for adding a bookmark
source: http://.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.");
}
}
Espero que sea útil.
Lo sentimos, pero no hay una forma de navegación cruzada para hacer esto. Su ejemplo de FF también está roto: no creará un marcador normal, sino un marcador establecido para abrirse en la barra lateral. Tendría que usar el servicio de marcador para crear un marcador real, pero esto fallará debido a restricciones de seguridad.
Mi enfoque con la ayuda de jQuery.
Probado en IE 6-8, Fx 1-25, Opera 7-14. Se degrada graciosamente en Chrome, Saf.
CSS:
.no-js .link-bookmark {
display: none;
}
JS:
/* ... Bookmark current page ... */
var $favLink = $(''.link-bookmark'');
if ( window.sidebar || ''AddFavorite'' in window.external || window.opera ) {
$favLink.show();
}
// add a ''rel'' attrib if Op 7+ && Fx >= 23
if ( window.opera || window.sidebar ) {
var $favLinkAttrRel = $favLink.attr(''rel'');
if ( typeof $favLinkAttrRel !== "undefined" && $favLinkAttrRel !== false ) { // don''t overwrite the rel attr if already set
$favLink.attr(''rel'', ''sidebar'');
}
}
$favLink.click(function( event ) {
//event.preventDefault(); // prevent the anchor tag from sending the user off to the link
var url = this.href;
var $title = $(''title'').text();
// IE Favorite
if ( ''AddFavorite'' in window.external ) {
event.preventDefault();
window.external.AddFavorite(url, $title);
}
// Fx <23 Bookmark, ''addPanel'' not available from v23 on any more.
else if ( ''addPanel'' in window.sidebar ) {
event.preventDefault();
window.sidebar.addPanel($title, url, '''');
}
// Op 7+ && Fx >= 23
else if ( window.opera || window.sidebar ) {
$favLink.attr(''title'', $title);
return true; // do nothing - the rel="sidebar" should do the trick
}
// for Saf, Konq etc - browsers who do not support bookmarking scripts
else {
event.preventDefault();
alert(''Your browser doesn/'t support the bookmark functionality,''
+ ''please add this page to your bookmarks manually.'');
}
});
No pude hacer funcionar el ejemplo anterior. De todos modos, la respuesta a la pregunta original ''no está funcionando en CHROME y no aparece mi mensaje de error diciendo "no compatible" tampoco ...'' se debe a la línea
else if (window.external) { // IE
Chrome en realidad pasa esta prueba y luego obvio no puede agregar un marcador. Cambié esta línea a
else if(window.external && !window.chrome) // IE
y ahora recibes el mensaje "no compatible". De hecho, eliminé este mensaje y llamé a la función hotKeys () para obtener una alerta más significativa. Tuve que hacer algunos cambios para que funcione
function showHotKeys()
{
var ua = navigator.userAgent.toLowerCase();
var str = '''';
var isWebkit = (ua.indexOf(''webkit'') != - 1);
var isMac = (ua.indexOf(''mac'') != - 1);
if (ua.indexOf(''konqueror'') != - 1) {
str = ''CTRL + B''; // Konqueror
} else if (window.home || isWebkit || isMac) {
str = (isMac ? ''Command/Cmd'' : ''CTRL'') + '' + D''; // Netscape, Safari, iCab
}
return ((str) ? ''Press '' + str + '' to bookmark this page.'' : str);
}
Siempre puede alertar al cliente para que presione ctr + D. Esto es universal en todos los navegadores. Es hortera, pero igual de útil para el cliente.