Общий диалог шрифтов (comdlg32.ocx) не работает в Windows 7, вызывая из JavaScript в IE - PullRequest
0 голосов
/ 10 января 2011

Я попробовал диалог шрифтов в 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>

Ответы [ 3 ]

1 голос
/ 10 января 2011

Модель безопасности IE продвинулась далеко, так как подобный код считался хорошей идеей.

Если вам повезет, вы можете получить его, отключив загрузку функций безопасности в IE8.

1 голос
/ 10 января 2011

В каком контексте безопасности работает ваш код? Например. внутри самого IE или приложения, управляющего веб-браузером? Если это в IE, в какой зоне безопасности работает ваша страница?

Из соображений безопасности большинство COM-объектов в системе запрещено запускать внутри IE.

( Не то чтобы это, вероятно, имеет значение, но вы пропустили точку с запятой в первой строке вашей функции )

0 голосов
/ 13 января 2011

Я не решил это.Я воспользовался советом Спудли и удалил зависимость из нашего веб-приложения.Вместо этого я просто сделал HTML-форму с некоторыми опциями шрифта.Намного проще, и все работает отлично.

...