我在VB6中使用表单应用程序尝试了字体对话框,它可以启动字体对话框,但是当我尝试在javascript中执行相同操作时,它失败了,但有例外:
由于错误800a8000无法完成操作
在线上调用ShowFont()。
这是我的HTML代码:任何想法?
<html>
<head>
<title>test</title>
</head>
<script>
function doclick() {
var fontDlg = document.all.fontDlg
//var fontDlg = new ActiveXObject("MSComDlg.CommonDialog");
/*
cdlCCRGBInit = 1;
cdlCCFullOpen = 2;
cdlCCPreventFullOpen = 4;
fontDlg.Flags = (cdlCCRGBInit | cdlCCFullOpen | cdlCCPreventFullOpen);
fontDlg.CancelError = false;
fontDlg.Min = 8;
fontDlg.Max = 72;
fontDlg.DialogTitle = "Change font settings";
fontDlg.ShowFont();
//fontDlg.ShowColor();
*/
fontDlg.ShowFont();
}
</script>
<body>
<input type=button onclick=doclick() value="click me"/>
<OBJECT id="fontDlg" style="LEFT: 224px; POSITION: absolute; TOP: 24px" classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB" CODEBASE="http://activex.microsoft.com/controls/vb5/comdlg32.cab #Version=1,0,0,0">
<PARAM NAME="_ExtentX" VALUE="847">
<PARAM NAME="_ExtentY" VALUE="847">
<PARAM NAME="_Version" VALUE="393216">
<PARAM NAME="CancelError" VALUE="0">
<PARAM NAME="Color" VALUE="0">
<PARAM NAME="Copies" VALUE="1">
<PARAM NAME="DefaultExt" VALUE="">
<PARAM NAME="DialogTitle" VALUE="">
<PARAM NAME="FileName" VALUE="">
<PARAM NAME="Filter" VALUE="">
<PARAM NAME="FilterIndex" VALUE="0">
<PARAM NAME="Flags" VALUE="0">
<PARAM NAME="FontBold" VALUE="">
<PARAM NAME="FontItalic" VALUE="">
<PARAM NAME="FontName" VALUE="">
<PARAM NAME="FontSize" VALUE="">
<PARAM NAME="FontStrikeThru" VALUE="0">
<PARAM NAME="FontUnderLine" VALUE="0">
<PARAM NAME="FromPage" VALUE="0">
<PARAM NAME="HelpCommand" VALUE="0">
<PARAM NAME="HelpContext" VALUE="0">
<PARAM NAME="HelpFile" VALUE="">
<PARAM NAME="HelpKey" VALUE="">
<PARAM NAME="InitDir" VALUE="">
<PARAM NAME="Max" VALUE="0">
<PARAM NAME="Min" VALUE="0">
<PARAM NAME="MaxFileSize" VALUE="260">
<PARAM NAME="PrinterDefault" VALUE="1">
<PARAM NAME="ToPage" VALUE="0">
<PARAM NAME="Orientation" VALUE="1">
</OBJECT>
</body>
</html>
答案 0 :(得分:1)
您的代码在什么安全上下文中运行?例如。在IE本身,或托管Web浏览器控件的应用程序?如果它在IE中,您的页面运行的安全区域是什么?
出于安全原因,系统中的大多数COM对象都无法在IE中运行。
(并非它可能很重要,但你在函数的第一行中缺少分号)
答案 1 :(得分:1)
IE的安全模型已经走了很长一段路,因为像这样的代码被认为是个好主意。
如果你很幸运,你可以通过关闭IE8中的大量安全功能来实现它。
答案 2 :(得分:0)
我没解决。我接受了Spudley的建议并从我们的Web应用程序中删除了依赖项。相反,我只是制作了一个带有一些字体选项的HTML表单。更容易,它工作正常。