我有这个代码,BOLD的execcommand,它不能在opera下工作。有谁知道为什么?感谢
<script type="text/javascript">
function SetToBold () {
Editor.execCommand ('bold', false, null);
}
function start() {
frames.iView.document.designMode = "On";
var myIFrame = document.getElementById("iView");
browser = navigator.appName;
if (document.all) { //IE
var iframe_window = window.frames["iView"];
iframe_window.document.body.focus();
}
else { //Firefox
field = myIFrame.contentWindow.document.getElementsByTagName("body")[0];
setTimeout("field.focus()",250);
}
if (browser == "Netscape") {
Editor = myIFrame.contentWindow.document;
Editor.designMode = 'On';
Editor.body.contentEditable = 'true';
}
else if(browser == "Microsoft Internet Explorer") {
frames['iView'].document.designMode='On';
Editor = frames['iView'].document;
}
}
我用body onload调用start函数。它是好的Firefox和ie,但在歌剧中不起作用。 有人知道歌剧中execcommand的一些限制吗?感谢
答案 0 :(得分:2)
在引用的脚本中,变量“Editor”仅在浏览器嗅探部分内给出一个值。在Opera中,“编辑器”将是未定义的,因此尝试执行“Editor.execCommand()”将引发错误。
而不是
if (browser == "Netscape") {
Editor = myIFrame.contentWindow.document;
Editor.designMode = 'On';
Editor.body.co`enter code here`ntentEditable = 'true';
}
else if(browser == "Microsoft Internet Explorer") {
frames['iView'].document.designMode='On';
Editor = frames['iView'].document;
}
你应该放弃浏览器嗅探并执行类似
的操作if ( myIFrame && myIFrame.contentWindow ) {
Editor = myIFrame.contentWindow.document;
Editor.designMode = 'On';
}
else if( frames['iView'] ) {
frames['iView'].document.designMode='On';
Editor = frames['iView'].document;
}
希望有所帮助:)
答案 1 :(得分:1)
在给出答案之前我想确定你在问什么。该脚本正在测试Netscape或IE。打开dragonfly控制台,您可以发现脚本的值。我觉得你也会遇到Webkit的困难。
>>> var browser = navigator.appName
undefined
>>> browser
"Opera"
答案 2 :(得分:0)
我注意到当你用navigator.appName提出时,较新版本的opera会显示为NETSCAPE。我记得并不总是如此,因为我的源码周围也有一些较旧的“ifs”,我使用的是常规名称。不能说,因为这时,只是说。