gpt4 book ai didi

Javascript Bookmarklet 在 IE8 中失败

转载 作者:行者123 更新时间:2023-11-29 17:32:26 26 4
gpt4 key购买 nike

有人想试一试为什么这个小书签在 IE8 中失败吗?它将 Friefox 和 Safari 中的所有文本转为大写。但在 IE8 中,它只是因“正在加载...”而停滞不前。我在 IE8 中启用了运行 scriplet 并降低了 javascript 安全设置。

2010 年 3 月 19 日更新:感谢 sergey,此书签现在可以在 IE 中使用。

javascript:
(function(){
var i,t,D=document,h,f,g=D.getElementsByTagName,ce=D.createElement,c=D.createStyleSheet,ac='appendChild',cn='childNodes',l,s='*{text-transform:uppercase}input,textarea{text-transform:none}';
for(i=0;t=document.getElementsByTagName('textarea')[i];i++)
t.value=t.value.toUpperCase();
if(D.namespaces){
h=g('head')[0];
f=h[ac](ce('div'));
f.innerHTML='b<style type=\'text/css\'>'+s+'</style>';
h[ac](f[cn][1]);
f.parentNode.removeChild(f);
}
else
if(c){
c('javascript:\''+s+'\'')
}
else{
l=document.createElement('link');
l.rel='stylesheet';
l.href='data:text/css,'+escape(s);
D.documentElement[cn][0][ac](l)
}
}
)()

最佳答案

在您的代码中添加少量内容即可解决问题:

javascript:(function(){
var i,t,D=document;
for(i=0;t=D.getElementsByTagName('textarea')[i];++i)
t.value=t.value.toUpperCase();
var newSS,styles='*{text-transform:uppercase}input,textarea{text-transform:none}';
if (document.namespaces) {
var head = document.getElementsByTagName("head")[0];
var factory = head.appendChild(document.createElement("div"));
factory.innerHTML = '&nbsp;<style type=\'text/css\'>' + styles + '</style>';
head.appendChild(factory.childNodes[1]);
factory.parentNode.removeChild(factory);
}
else
if(D.createStyleSheet){
D.createStyleSheet("javascript:'"+styles+"'");
}
else{
newSS=D.createElement('link');
newSS.rel='stylesheet';
newSS.href='data:text/css,'+escape(styles);
D.documentElement.childNodes[0].appendChild(newSS);
}
}
)()

2010 年 3 月 17 日更新:我精简了代码,创建了一个小书签,并在 IE 中成功使用了它。

10 年 3 月 18 日更新:我注意到缩小后的代码无法在 IE 浏览器以外的其他浏览器中运行,这是经过测试的版本:

javascript:(function(){var i,t,D=document,h,f,g=D.getElementsByTagName,ce=D.createElement,c=D.createStyleSheet,ac='appendChild',cn='childNodes',l,s='*{text-transform:uppercase}input,textarea{text-transform:none}';for(i=0;t=document.getElementsByTagName('textarea')[i];i++)t.value=t.value.toUpperCase();if(D.namespaces){h=g('head')[0];f=h[ac](ce('div'));f.innerHTML='b<style type=\'text/css\'>'+s+'</style>';h[ac](f[cn][1]);f.parentNode.removeChild(f);}else if(c){c('javascript:\''+s+'\'')}else{l=document.createElement('link');l.rel='stylesheet';l.href='data:text/css,'+escape(s);D.documentElement[cn][0][ac](l)}})()

关于Javascript Bookmarklet 在 IE8 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com