What is difference between .htc and .js file?

Technically, you can use conditional comments to allow the code to validate.

http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx

A hack is a hack, it's just weird that MS made this hack in a way that it's a valid hack.

Now, something else to consider - are you using a JavaScript library? Then you should be using the library to do this functionality, which would eliminate the need for the HTC (which needs JavaScript enabled to run).


From the Microsoft HTC Reference🕗:

For Microsoft Internet Explorer 5 and later, HTML Components (HTCs) provide a mechanism to implement components in script as Dynamic HTML (DHTML) behaviors. An HTC is an HTML file that contains script and a set of HTC-specific elements that define the component. The component is saved with an .htc extension. This section lists these HTC-specific elements and the members they support.

Therefore, they are not just javascript .js files, they also contain a set of HTC-specific elements.

Edit:

Concerning the conversion from .htc to .js, I'm not sure if it can be done directly, but I've come across this set of .js tools to address the same issues that .htc files are trying to fix in IE.


A htc-file is a behaviour-file, have a look at MSDN🕗, W3C🕗 and here🕗. In a htc-file you can embed HTML-Code as well as Script-Code. Since a htc-file is not a pure Javascript-File, you cannot just convert it, but you may extract the Javascript-Parts of it, if you need.

Most HTC-Files I have seen so far are there to fix Internet Explorer problems, e.g. PNG transparency, which shows the sense of the htc-files: They can attach foreign properties to HTML-Elements, in this case, transparency.