我这是在别人的框架托管的网页,但是这一切都在同一个域(我的内容是通过服务上传到自己的服务器)。 他们为什么使用框架是另一天的说法,但是。 他们不会改变自己的标记,所以我必须找到一个解决办法,可以在我的代码工作。 我发现在我的测试情况下,一个奇怪的问题,可能会帮助我,如果我能解决这个问题。 这仅仅是在IE照例的问题。
封装帧看起来像这样(完成与未加引号的属性,是):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
<TITLE>foo</TITLE>
<META content="text/html; charset=UTF-8" http-equiv=Content-Type>
<META content=IE=EmulateIE8 http-equiv=X-UA-Compatible>
</HEAD>
<FRAMESET frameSpacing=0 cols=8,*,8 frameBorder=1>
<FRAME id=blackleft src="black.htm" name=blackleft scrolling=no>
<FRAME id=content marginHeight=0 src="button.html" name=ScormContent marginWidth=0>
<FRAME id=blackright src="black.htm" name=blackright scrolling=no>
</FRAMESET>
</HTML>
我的测试用例页面(button.html)看起来是这样的:
<!DOCTYPE html>
<html><head>
<meta http-equiv=X-UA-Compatible content="IE=Edge">
<title>test</title>
</head>
<body>
<section>
<a href="javascript:alert('hello world');">
<button>pressing me works unless you are in a frameset</button>
</a>
</section>
<section>
<a href="#" onclick="alert('hello world');">
<button>Pressing me always works</button>
</a>
</section>
</body>
</html>
我不知道为什么,当它被用于一个框架内的第一个按钮是在IE9无响应 - 运行在一个可点击的按钮的页面独立的结果。
喜欢读关于这两个文档类型和X-UA兼容的把戏给我留下了比以往更迷糊了,我能不知道是什么,我应该做的。 如前所述,我不能改变框架的标记以任何方式,所以为了让我的代码工作(其依靠的东西,如beforeunload,为了传输数据保存网页时导航卸载事件-这不在框架中运行时的工作)。 我国的直觉告诉我,按钮的例子显示我靠近潜在的问题,并在互联网告诉我,它是有与X-UA兼容的标签和怪异模式做的,但关于这个问题的大量的阅读还没有拘捕我一个解决方案尚未...例如,如果我选择强行IE9到(比方说)IE7兼容模式,然后我的所有网页的造型工作就走出了窗外。