Jens Gyldenkærne Clausen wrote:
> God ide - husk blot at Opera-brugere skal taste Ctrl-T.
Takker - hermed husket - forøvrigt meget sødt, at Opera bruger
Meta-tagget description til bogmærker!
>>1. Hvordan laver jeg en if(not IE) betingelse - er det dén der
>>på hjemmesideskolens side er betegnet som if(document.all) ?
>
> Et godt råd mht. javascript-tests - test så vidt muligt altid for
> de egenskaber du vil bruge i stedet for at teste for egenskaber som
> måske antyder browser X eller browser Y.
>
> I tilfældet med bookmarks skal der testes for
> window.external.AddFavorite (og den overordnede egenskab
> window.external).
Det var præcis dét jeg var ude efter - det virker som en meget bedre
løsning end den oprindelige - meget mere robust - takker!
> Du kan se et fungerende eksempel på siden her.
> <
http://gyros.dk/usenet/html/bookmark.shtml>.
>
> Scriptet forsøger også med en Netscape-metode at tilføje bogmærker
> til Geckobrowsere, men det har jeg aldrig fået til at virke. Men
> til gengæld er der fallback, så man får besked om tastaturkoden
> (Ctrl-T til operabrugere og Ctrl-D til resten).
Jeg har bikset lidt med scriptet, da jeg syntes det brugte en lidt
mystisk if-else struktur - det er lavet om til følgende:
function AddBookmark(BookmarkTitle){
var url = window.top.document.location;
// Internet Explorer - eller noget andet der understøtter AddFavorite()
if(window.external && typeof window.external.AddFavorite != "undefined")
window.external.AddFavorite(url,BookmarkTitle);
// Opera - eller noget der faker det...
else if (typeof opera!="undefined")
alert("Det ser ud til at du bruger Opera.\nTryk Ctrl-T for at tilføje
siden til dine bogmærker.");
// Gecko-baseret - eller noget der faker det...
else if (typeof netscape!="undefined") {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var
c=Components.classes["@mozilla.org/browser/bookmarks-service;1"].getService(Components.interfaces.nsIBookmarksService);
c.addBookmarkImmediately(url,BookmarkTitle,0,"text/html");
} catch(ex) {
alert("Det ser ud til at du bruger en Gecko-baseret browser.\nTryk
Ctrl-D for at tilføje siden til dine bogmærker");
//alert("error:"+ex.description);
//Interface not supported?
}
// En helt anden browser, som vi ikke lige kan fange...
} else {
alert("Du bruger desværre en ukendt browser.\nPrøv evt. at tilføje
siden til dine bogmærker vha. browserens menu!");
}
}
Er der umiddelbart nogle "issues" med ovenstående og er det rigtigt
eller forkert at skrive "Gecko-baseret browser"?
> Jeg har ikke undersøgt om tastaturkoden er noget andet end Ctrl-D
> for andre browsere end Opera.
Det kan være, at der kommer lidt respons fra nogle indehaverere af de
mere eksotiske browsere - ellers lader jeg det ligge ved det her
resultat, som jeg egentlig er ok tilfreds med!
Tak for hjælpen og forklaringerne!
Mvh Tommy