Autor | Zpráva | ||
---|---|---|---|
Iceman24 Profil * |
#1 · Zasláno: 8. 2. 2011, 18:48:17
Prosím o radu. Následující kód funguje pod Google Chrom a Firefoxem v pořádku, ale pod IE8 ne.
document.write("<div id=\"cse\" style=\"width: 100%;\"></div>"); document.write("<scr"+"ipt language=\"JavaScript\" src=\"http://www.google.com/jsapi\" type=\"text/javascript\">"); document.write("</scr"+"ipt>"); document.write("<scr"+"ipt language=\"JavaScript\" type=\"text/javascript\">google.load('search', '1', {language : 'cs'});google.setOnLoadCallback(function() {var customSearchControl = new google.search.CustomSearchControl('016856020865680136112:do-flvffrd4');customSearchControl.setResultSetSize(google.search.Search.SMALL_RESULTSET);customSearchControl.draw('cse');}, true);"); document.write("</scr"+"ipt>"); document.write("<link rel=\"stylesheet\" href=\"http://www.google.com/cse/style/look/default.css\" type=\"text/css\"/>"); Jde o vyhledavač textu od Googlu a ten se v IE8 vůbec nezobrazí. |
||
Radek9 Profil |
#2 · Zasláno: 8. 2. 2011, 18:51:27 · Upravil/a: Radek9
Iceman24:
Zkus použít document.createElement(). |
||
Chamurappi Profil |
#3 · Zasláno: 8. 2. 2011, 18:56:23
Reaguji na Radka9:
Ty vidíš nějaký důvod, proč by to s document.write nemělo fungovat? Přepsat to s využitím uvedené metody nebude snadné a jestli není problém v document.write , je to zbytečná práce.
Reaguji na Icemana24: Chybu nevidím. Prosím o odkaz na živou ukázku. |
||
Iceman24 Profil * |
#4 · Zasláno: 8. 2. 2011, 20:16:01
Chamurappi:
http://www.glf.cz/cz/about/ Když napíšu ten vnořený skript zvlášť pouze do té jedné stránky, tak všechno funguje i v IE8. |
||
Chamurappi Profil |
#5 · Zasláno: 8. 2. 2011, 20:25:24
Reaguji na Icemana24:
Nefunguje to ani v sedmičce. Problém asi skutečně bude souviset s document.write — když vypisuješ kód po částech, prohlížeč nemusí správně uhodnout, kdy se má nad ním zamyslet a případně ho opravit (pouzavírat otevřené <div> y, <script> y).
Zkusil bych následující úpravu: Na začátek skriptu dej var html = []; (tím vytvoříš pole), pak nahraď všechny document.write za html.push (tím naplníš pole) a na úplný konec přidej document.write(html.join("")); (tím vypíšeš pole spojené do jednoho řetězce).
Mimochodem, jsi si vědom nevýhod, jaké má vkládání menu přes JavaScript? Nebyl by lepší nějaký jiný postup? |
||
Iceman24 Profil * |
#6 · Zasláno: 8. 2. 2011, 20:40:11
Reaguji na Chamurappi:
Tak jsem to přepsal podle návodu a výsledek je bohužel pořád stejný. Navíc pokud do <div id="cse"...></div> přidám nějaký text (Loading) tak se tento text v IE zobrazí. Předpokládám, že chyba bude až v samotném vnořeném skriptu. |
||
_es Profil |
#7 · Zasláno: 9. 2. 2011, 05:23:10
Iceman24:
Aké má vlastne toto použitie document.write účel?
Nestačí dať ten kód normálne do stránky? Značka link by mala byť len v hlavičke, nie v body .
|
||
Iceman24 Profil * |
#8 · Zasláno: 9. 2. 2011, 07:02:24
Reaguji na _es:
Důvodem je velikost webu. Asi to není ideální, ale celý web má teď možná přes sto stránek (historický vývoj + mé omezené znalosti). Proto to chci řešit jen na jednom místě pomocí JS, který již dnes už každá stánka volá. Bohužel nemám ani čas a ani chuť celý web předělávat. A protože to řešení ve dvou ze třech prohlížečů funguje, tak jsem doufal, že to ani nebude nutné... |
||
Časová prodleva: 4 dny
|
|||
Iceman24 Profil * |
#9 · Zasláno: 13. 2. 2011, 17:17:22
Iceman24:
Tak už vím, kde je problém. Internet Explorer má problém s následujícím voláním skriptu: html.push("<scr"+"ipt language=\"JavaScript\" src=\"http://www.google.com/jsapi\" type=\"text/javascript\">"); Důsledkem toho, pak nezná hodnotu "google.load", která je použita dále. Pokud volání skriptu provedu uvnitř každé stránky, vše funguje i v IE. Předpokládám, že chyba bude v atributu "src", ale nevím kde. Můžete mi prosím poradit? Díky |
||
Časová prodleva: 3 dny
|
|||
Iceman24 Profil * |
#10 · Zasláno: 16. 2. 2011, 18:10:34
Iceman24:
Tak problém objeven a vyřešen. Viz: http://stackoverflow.com/questions/94141/javascripts-document-write-inline-script-execution-order |
||
Časová prodleva: 14 let
|
0