PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler beim Seitenbookmark im Mozilla



betrazivis
06.02.2004, 14:42
Habe für einen automatischen Seitenbookmark folgendes Script geschrieben:



function favorit(url,titel,comment)
{
if (document.getElementById)
{
navi="NS6";
}
if (document.layers)
{
navi="NS";
}
if (document.all)
{
navi="IE";
}

if (navi=="IE")
{
window.external.AddFavorite(url,titel)
}
if (navi=="NS6")
{
window.sidebar.addPanel(url,titel,comment);
}
if(navi=="NS")
{
window.alert('Bitte im Browser die Funktion STRG-D benutzen');
}

}


Es startet mit einer Browserabfrage(DOM,IE oder NN4) und leitet dann zu den entsprechenden Bookmarkfunktionen weiter.

Leider gibt mir Mozilla folgende Fehlermeldung aus:


Error: [Exception... "'Script attempted to add sidebar panel from illegal source' when calling method: [nsISidebar::addPanel]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: http://art-and-smart.de/FINE/portal1/javascript/javascript.js :: favorit :: line 32" data: no]
Source File: http://art-and-smart.de/FINE/portal1/javascript/javascript.js
Line: 32

Was ist hier denn illegal???

?( ?(

st0n3
06.02.2004, 17:39
Hallo,


function UserRef() {
this.ua = navigator.userAgent.toLowerCase();
this.nn4 = (document.layers);
this.ie4 = (document.all && !document.getElementById);
this.ie = (document.all);
this.opera = (window.opera);
this.gecko = (this.ua.indexOf('gecko') != -1 && this.ua.indexOf('safari') == -1);
this.mozilla = (this.gecko && this.ua.indexOf('gecko/') + 14 == this.ua.length);
this.safari = (this.ua.indexOf('safari') != -1);
this.aol = (this.ua.indexOf('aol') != -1);
this.dom = (document.getElementById);
}

var ur = new UserRef(); Das Objekt kann sehr nützlich sein. Hat mir damals sehr viel Zeit erspart ;)
function favorit(url, titel, comment) {

if (ur.ie && !ur.opera) {
window.external.AddFavorite(url, titel)
} else if (ur.gecko) {
window.sidebar.addPanel(titel, url, comment);
} else {
window.alert('Bitte im Browser die Funktion STRG-D benutzen');
}

}Bei der Funktion addPanel muss zuerst der Titel dann die URL und zuguterletzt das Kommentar als Parameter übergeben werden.
Siehe Datei: Programme\mozilla.org\Mozilla\components\nsSiedbar .js auf Windows.

#> locate nsSidebar.js
oder
#> find / -name nsSidebar.js
für Linux. ;)

Online: nsSidebar.js (http://lxr.mozilla.org/mozilla/source/xpfe/components/sidebar/src/nsSidebar.js)

nsSidebar.prototype.addPanel =
function (aTitle, aContentURL, aCustomizeURL)
{
debug("addPanel(" + aTitle + ", " + aContentURL + ", " +
aCustomizeURL + ")");

return this.addPanelInternal(aTitle, aContentURL, aCustomizeURL, false);
} Anscheinend wird dann noch die URL nach Ihre richtigkeit überprüft.
function sidebarURLSecurityCheck(url)
{
if (url.search(/(^http:|^ftp:|^https:)/) == -1)
throw "Script attempted to add sidebar panel from illegal source";
}Komisch fand ich nur das als ich http://google.de eintragen wollte, ich die gleiche Fehlermeldung erhielt. Doch als ich http://www.google.de eingegeben habe hat es funktioniert. Naja ich habe dann nicht weiter nachgeforscht...

<script>
if ((ur.ie && !ur.opera) || ur.gecko)
document.writeln('<a href="#" onClick="favorit(\'http://www.google.de\', \'Google [de]\', \'\');return false;">Zu den Favoriten hinzuf&uuml;gen</a>');
</script>

Sidebar (http://devedge.netscape.com/viewsource/2002/sidebar/)
<SCRIPT LANGUAGE="JavaScript">


function addNetscapePanel() {
if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function"))
{
window.sidebar.addPanel ("My Sidebar Developer's Guide",
"http://developer.netscape.com/doca/manuals/browser/sidebar/sbtoc.html","");
}
else
{
var rv = window.confirm ("This page is enhanced for use with Netscape 6/7. "
+ "Would you like to upgrade now?");
if (rv)
document.location.href = "http://home.netscape.com/download/index.html";
}
}
//-->

</SCRIPT>
Gruß st0n3

betrazivis
06.02.2004, 18:00
Oh Gott... :lol:...da komm ich heute aber nimmer zu mir das anzuschauen.
Trotzdem schonmal....thx for help....

betrazivis
23.02.2004, 14:51
Ja, der URL wird auf seine Richtigkeit überprüft.
Wenn sich das Dokument also auf Server X befindet kannst du nicht einen URL von Server Y bookmarken.

Ich habs einfach so gelöst:

Dein Objekt benutzt
Deine Funktion benutzt
und einach in den Funktionesaufruf:


bookmark('http://www.<?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] ?>',IE'Titel','Komentar')"



fertig ist das Mondgesciht