У меня довольно типичный код букмарклета, который отлично работает для меня во всех браузерах.
Однако когда я беру этот код и помещаю его в обработчик элемента HTML onClick, он не работает в IE (6, 7 или 8).
Это код:
javascript: (
function(){
function l(i,u){
var d=document;
var s;
try{
s=d.standardCreateElement('script');
}catch(e){}
if(typeof(s)!='object')
s=d.createElement('script');
try{
s.type='text/javascript';
s.src='http://{Domain}/bk/' + u;
s.id='s_' + i;
d.getElementsByTagName('head')[0].appendChild(s);
}catch(e){
}
}
AppD = '{Domain}';
l('b', 'bk.js');
}
)();
Сжатый как букмарклет, который выглядит как:
javascript:function(){function l(i,u){var d=document;var s;try{s=d.standardCreateElement('script');}catch(e){} if(typeof(s)!='object') s=d.createElement('script'); try{s.type='text/javascript';s.src='http://{Domain}/bk/' + u;s.id='s_' + i;d.getElementsByTagName('head')[0].appendChild(s);}catch(e){}}AppD = '{Domain}';l('b', 'bk.js');})();
И это прекрасно работает.
Я вынул префикс javascript: и поместил его в элемент onClick:
<img onclick="function(){function l(i,u){var d=document;var s;try{s=d.standardCreateElement('script');}catch(e){} if(typeof(s)!='object') s=d.createElement('script'); try{s.type='text/javascript';s.src='http://{Domain}/bk/' + u;s.id='s_' + i;d.getElementsByTagName('head')[0].appendChild(s);}catch(e){}}AppD = '{Domain}';l('b', 'bk.js');})();" />
И это тоже хорошо работает, за исключением того, что в IE код внутри bk.js (скрипт, который вводится) жалуется, что переменная AppD не определена ...
Есть идеи, почему это происходит?
Есть ли какие-либо ограничения в коде, который можно поместить в обработчик onClick?
Спасибо!
Daniel