日期:2014-05-16  浏览次数:20662 次

请高手指教关于锚点样式a:visited及iframe的几个问题,在线等
问题一:
  问题描述:有一组超链接a1,a2,a3,...,an;它们共用样式 a , a:visited, a:hover, a:active;当我访问了a1后,
希望特别标明a1;当我访问a2,时,希望特别标明a2,同时a1回复到默认的a:visited样式,其它的也一样;
也即:js如何动态控制a:visited样式

问题二:
iframe嵌套页面,如何调整iframe的高度来动态自适应子页面的高度;

问题三:
iframe两次层嵌套页面,最内层的页面的onload事件控制页面的元素的显示隐藏失效;调试发现如果onload事件
延迟一段时间执行,则不会失效;

------解决方案--------------------
答案一: visited不是那么用的, 你可以试试 a:active 伪类, 但是这个与焦点有关, 如果你还想与焦点无关, 只能手动写JS, 单独写一个 .selected 样式, 来动态设置了

答案二: 在父窗口使用Interval来不断获得子窗口的body的scrollHeight, 并设置, 也可以在子窗口加载完以后, 调用父窗口的函数来设置自己所在的容器的高度, 前面一种方法要考虑子窗口的加载过程, 所以要 try, 后面一种方法可以不考虑, 但是会有一小段时间出现滚动条, 具体的代码可以上网找找

答案三: 根据加载顺序以及事件流等等因素, 甚至浏览器的bug, 会引起这种情况, 你可以setTimeout(执行,10) 这样的方式来执行, 尽量不在事件中直接执行, setTimeout会等事件流全部走完以后执行, 差不多是多线程, 只不过是伪的~
------解决方案--------------------
1,增加一个a.focus类型,点击链接时给这个a增加class="focus",移除其他a的class属性

2,给iframe添加onload事件,在事件里面获取子页面的高度,然后设置iframe的高度,注意子页面不能跨域,要不无法获取子页面高度
HTML code
<iframe style="width:100%;height:100px" onload="setHeight(this)" src="x2.html" frameborder="0" marginheight="0" marginwidth="0"></iframe>
<script>
    function setHeight(ifr) {
        ifr.style.height = ifr.contentWindow.document.body.scrollHeight + 'px';
    }
</script>