s.php页面中,
window.onload =  function ()
{  
    alert("a");
    document.write("<div><a href='ss.php'><img src='aa.jpg'></a></div>");
}页面可正常运行,不断刷新页面也正常,可我在s.php页面中想把上面的那段js封装一个js文件,再引进来,
如:s.php页面中<script src="pro_s.js"></script>pro_s.js页面中window.onload =  function ()
{  
    alert("a");
    document.write("<div><a href='ss.php'><img src='aa.jpg'></a></div>");
}此时我再运行s.php页面,第一回就可正常,可我再刷新此页面,就连  alert("a"); 也弹出不了,
问:这是为何,现如果用此封装js的方法应该如何让页面正常运行?

解决方案 »

  1.   

    写在<body>的onload事件里面吧
      

  2.   

    应该是缓存问题。刷新时,由于JS的目标没变化,而之前JS内容已经读取并解析了,所以不会再次读取,而是直接利用上次的解析成果。如果要使其工作的话,给SRC里的JS地址后面加上时间戳,可以防止缓存,强制再次读取JS。
      

  3.   

    多谢,
    二楼的,SRC里的JS地址后面加上时间戳 ,怎么加?
      

  4.   

    试了一下,这样好像也不行。查了下资料,这个问题有点悬,
    http://www.w3help.org/zh-cn/causes/SD9022最好尝试更改一下方式。
      

  5.   

    晕了。这个问题重说。
    你这样
    document.write("<div><a href='ss.php'><img src='aa.jpg'></a></div>");
    之后,HTML内容已经变成这些内容,而不再含有对JS的调用内容了。你可以看下生成的源码。之后再刷新,刷新的只是这个内容而已,不是原来的HTML了。比如你把这个语句改成这样:
    document.body.innerHTML+="<div><a href='ss.php'><img src='aa.jpg'></a><br></div>";再刷新就可以每次都执行了。
      

  6.   

    也就是说,刷新的时候,是依据现在的页面内容(包括你用document.write这样后来改变的内容)来决定如何刷新的。
    直接在地址栏里重新回车,才会真正去读取原始HTML的内容加载执行。
      

  7.   

    document.body.innerHTML+="<div><a href='ss.php'><img src='aa.jpg'></a><br></div>";
    或用iframe