

Javascript problém
Se svými mizivými znalostmi programování jsem se pokusil dát si na stránky linky na Přidat k oblíbeným a Nastavit jako homepage. Zkombinoval jsem několik postupů, které jsem našel porůznu na webu. Nejdřív jsem definoval dvě funkce.
1) pro přidání k oblíbeným
function AddFavorite(linkObj,addUrl,addTitle)
{
if (document.all && !window.opera)
{
window.external.AddFavorite(addUrl,addTitle);
return false;
}
else if (window.opera && window.print)
{
linkObj.title = addTitle;
return true;
}
else if ((typeof window.sidebar == 'object') && (typeof window.sidebar.addPanel == 'function'))
{
window.sidebar.addPanel(addTitle,addUrl,'');
return false;
}
}
2) pro nastavení jako výchozí stránka
function SetAsHomepage()
{
if (document.all && !window.opera)
{
this.style.behavior='url(#default#homepage)'; this.setHomePage(document.location.href); return false;
} else {
window.alert('Váš prohlížeč nepodporuje automatické nastavení této funkce.');
return false;
}
}
Pak jsem přidal odkazy:
echo "<a href='#' title='Přidat k oblíbeným' rel='sidebar' onclick='return AddFavorite(this,document.location.href,document.title);'>Přidat k oblíbeným</a><br>
<a href='#' title='Nastavit jako výchozí' onclick='return SetAsHomepage();'>Nastavit jako výchozí</a>";
No, a co se stalo?
V Opeře funguje obojí.
Ve FF funguje obojí, ale okno pro schválení přidání do oblíbených se objeví DVAKRÁT.
V IE přidání k oblíbeným funguje, nastavení jako homepage ne.
Jak to opravit?
Díky.
Pridané formátovanie zdrojového kódu. (los)
Mne sa to tam zjavilo raz. Máš tu stránku niekde prístupnú, kde sa to zobrazuje dvakrát?
Vo funkcii pre nastavenie homepage, používaš v IE kľúčové slovo this, pod ktorým ale nie je odkaz, na ktorý používateľ klikol. Môžeš to prepísať napr. takto (netestované):
A potom v HTML:
Spravil by som to ešte trochu inak (bez detekcie prehliadača, pridávalo by sa to tam iba ak má používateľ zapnutý JavaScript, ...), ale keď to stačí takto...
Božské! Chodí to!
Detekuji ten prohlížeč, protože mně vadí, když uživatel klikne a nic se nestane (ale nejsem programátor ani z rychlíku, spíš se jen logicky snažím poskládat co kde najdu metodou pokus-omyl, což je poměrně náročné na čas i na psychiku - takže nevím, jaký je běžný úzus)
Bylo by asi ideální udělat to tak, aby uživateli, který nemá javascript to napsalo, že ho musí mít (pokud se tak neděje automaticky, opět - netuším).
Zvláštní je to dvojí zobrazování u mého FF, k vidění je to na www.drbo.cz.
Díky za pomoc.
No... od losa jede často všechno...
Aha, pre pridanie do obľúbených by rel="sidebar" malo stačiť. Takže môžeš vyhodiť vo funkcii AddFavorite tie dve vetvy určené pre prehliadače iné než IE.
edit: návratovou hodnotou z tej funkcie by malo vždy byť false.
edit2: čo som napísal, vlastne nie je úplne v poriadku... Zvláštne je, že keď som si stiahol tvoju stránku k sebe a stlačil pridanie do obľúbených, tak mi to okno vyskočilo len raz...
Na fórum czilla mi poradili úpravu podle http://developer.mozilla.org/cs/docs/Opravy_chyb_we bmasterů:Nefunkční_prvky_stránky. Upravil jsem to v těch funkcích a skutečně, dvojí naskakování schvalovacího okna zmizelo... Zvláštní ale je, že u té druhé funkce jsem to musel nechat být jak to bylo, protože když jsem to změnil, FF nefungoval vůbec...
Čo presne si upravil v tých funkciách?
Na tej stránke, podľa ktorej si to upravoval, píšu len to, že namiesto pristupovanie k objektom cez document.all alebo document.layers sa má použiť document.getElementById alebo prinajhoršom tá ich podivná funkcia GetObject (ktorá je skôr ukážkou toho, ako by sa to robiť nemalo).
Já tomu vážně skoro vůbec nerozumím...
Nahradil jsem
za
V každém případě to kupodivu funguje v případě "přidat k oblíbeným" - FF už to potvrzovací okno zobrazuje jen jednou a nefungovalo to v "nastavit jako výchozí", tam jsem musel ponechat ten původní tvar...
No to by vysvetľovalo všeličo - napríklad to, že ten skript potom vo Firefoxe spadne a nevykoná sa vetva pre Firefox. Takže to okno vyskočí len vďaka tomu rel=sidebar.
Vo Firefoxe to vyskočilo dvakrát, pretože to okno pre odkaz, ktorý ma nastavené rel=sidebar, sa zobrazí nezávisle na tom, čo vráti obslužná funkcia udalosti click (v Opere to funguje výnimočne normálne). Takže najlepšie bude asi zrušiť hodnotu atribútu rel v prípade, že prehliadač pozná funkciu na pridanie medzi obľúbené stránky:
A potom v HTML:
Tohle chodí jen v Opeře, ve FF a IE ne...
Pardón - pre FF som poplietol poradie parametrov a v IE som teraz zistil, že test na window.external.AddFavorite nevráti ani true a ani false, ale ticho spadne.
Takže druhý pokus, tentokrát som to aj vyskúšal:
Vůbec nevím o čem mluvíš...
Nicméně to mi nezabránilo, abych to nastavil tak, jak jsi řekl a voilá - funguje to jak víno...
www.drbo.cz děkuje...
P.S. Nevyznáš se náhodou taky takhle v php? Tam mám taky jeden drobný problém...
Mám dojem, že se los v php trochu vyzná (
), přesto bych ti doporučil založit na poradně nový příspěvek a do něho uvést, co máš za problém? Určitě se najde někdo, kdo poradí (třeba zrovna severské zvíře) a řešení může pomoct i ostatním, kteří by narazili na stejný problém.
No tak já jsem zase jihoamerické zvíře (lama) ale zvířata by si měla pomáhat...
Spíš jde o to, že se jedná o velmi specifický problém úzce se dotýkající jednoho CMS... Nicméně vlákno založím a budu čekat na losa, eventuálně jiného zástupce fauny...
Na CMS je tady spousta odborníků (vím minimálně o jednom
), ničeho se neboj a směle se ptej! 