@codenerd på twitter Mit seneste tweet:

javascript: tilføj bogmærke

Der er mange javascript funktioner derude til at tilføje bogmærke, som samtidig påstår de er crossbrowser, men det er de bare ikke, her er en af de mest populære funktioner, som anbefales overalt og siges at virke i IE, Firefox og Opera

PHP
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
function addBookmark(title, url) {
if (window.sidebar) {
window.sidebar.addPanel( title, url,"" );
} else if( document.all ) {
window.external.AddFavorite( url, title );
} else if( window.opera & window.print ) {
return true;
}
}
</script>

Ovenstående virker da også i IE og til dels i Firefox, men absolut ikke i Opera. For det første skal den sidste else if affyres når Opeara detectes – det vil den bare aldrig blive, da document.all anvendes til at “finde” IE, her er problemet bare at Opera også forstår document.all. Dernæst udføres der ingenting i den sidste betingelse.

I Firefox vil ovenstående tilføje et bookmark, men dette vil blive åbnet i Firefox’s sidebar – da browseren ikke tillader javascript at tilføje bookmarks til hovedbookmarks – sådan er det og det kan vi ikke ændre på – men vi kan ændre ovenstående script til følgende:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
<!--
function addBookmark(titel,url) {
    if (window.sidebar) {
        //firefox, safari, netscape osv
        window.sidebar.addPanel(titel, url,"");
    } else if(window.external) {
        //internet explorer
        window.external.AddFavorite(url,titel);
    } else if(window.opera && window.print) {
        //opera - her virker det ikke så vi returnere bare med besked om at trykke ctrl+d
        alert('Da du bruger Opera skal du trykke ctrl+d for at bookmarke denne side');
        return true;
    }
}    
-->
</script>

Her retter vi for det første problemet med at Opera detectes som IE, dernæst tilføjer vi en besked til Opera brugere om at trykke ctrl+d hvis de ønsker at bookmarke siden. For at få ovenstående på et link sættes href=”addBookmark(‘den ønskede titel’,’http://dinside.dk‘);”

Scriptet vil som sagt tilføje et rigtigt bogmærke i IE, et sidebar bogmærke i Firefox, og fortælle Opeara brugere hvordan de tilføjer et bogmærke, dette er det tætteste vi kommer på et Cross-browser bogmærke

Skriv en kommentar

Krævede felter er markeret med *.

*