0

我在 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>
4

3 回答 3

1

您的代码在什么安全上下文中运行?例如,在 IE 内部,还是托管 Web 浏览器控件的应用程序?如果在 IE 中,您的页面在哪个安全区域运行?

出于安全原因,系统上的大多数 COM 对象都无法在 IE 中运行。

这可能并不重要,但您在函数的第一行缺少分号

于 2011-01-10T15:36:30.623 回答
1

自从这样的代码被认为是一个好主意以来,IE 的安全模型已经取得了长足的进步。

如果幸运的话,您可以通过关闭 IE8 中的大量安全功能来使其正常工作。

于 2011-01-10T15:42:41.503 回答
0

我没有解决。我接受了 Spudley 的建议,并从我们的 Web 应用程序中删除了依赖项。相反,我只是制作了一个带有一些字体选项的 HTML 表单。容易得多,而且效果很好。

于 2011-01-12T22:46:32.623 回答