How to get IE9 standards support for dialogs opene

2019-01-09 18:24发布

问题:

I'm translating some of my old HTAs from Quirks to IE9 standards. However, it seems that modal and modeless dialogs opened by HTA don't support IE9 standards mode.

Test dialog:

<!DOCTYPE html>
<html>
<head>
<title>TestDialog</title>
<meta http-equiv="x-ua-compatible" content="ie=9" />
</head>
<body>
<svg>
    <circle cx="100" cy="100" r="50" fill="#0f0" />
</svg>
</body>
</html>

In the HTA main page:

<button onclick="showModalDialog(...)">Modal</button>
<button onclick="showModelessDialog(...)">Modeless</button>

When opening TestDialog from HTA, it's empty. If the main page is a regular html-document, the green circle appears in the dialog. When opening from HTA, there's no difference if the dialog file itself were htm or hta.

I've also tested addEventListener() but it also won't work in dialogs.

So, can I "force" dialogs to support IE9 standards when opening from HTA?


EDIT

It seems that modal and modeless dialogs opened from HTA are on the level of IE8. This same happens when using IE10 in Windows7.

回答1:

A quick Google of the keywords in this question gave me this page on Microsoft MSDN site: http://msdn.microsoft.com/en-us/subscriptions/ms536496(v=vs.85).aspx

The answer to your question is on tha page. The answer is to add an x-ua-compatible meta tag to your HTML's <head> section.

To quote:

By default, HTAs display webpages in Compatibility View, which displays standards-mode content in IE7 Standards mode and quirks mode content in IE5 (Quirks) mode. To utilize features available to current versions of Internet Explorer, use the meta element to define an X-UA-Compatible header for your HTA

The tag would look like this:

<meta http-equiv="x-ua-compatible" content="ie=9">

The above is according to the MSDN site. In fact, I'd suggest that using content="ie=edge" would be better than specifying IE9 mode. Otherwise you'll lose out on any new features in IE10 when you upgrade to that.