js window.onload 加载多个函数和追加函数 - 唔愛吃蘋果 - 博客园
window.onload 不能同时加载多个函数,后面会把前面的覆盖,解决办法:
function addLoadEvent(func) {
var oldonload = window.onload;//得到上一个onload事件的函数
if (typeof window.onload != 'function') {//判断类型是否为'function',注意typeof返回的是字符串
window.onload = func;
} else {
window.onload = function() {
oldonload();//调用之前覆盖的onload事件的函数---->由于我对js了解不多,这里我暂时理解为通过覆盖onload事件的函数来实现加载多个函数
func();//调用当前事件函数
}
}
}
//(完整示例)使用如下:
function t(){
alert("t")
}
function b(){
alert("b")
}
function c(){
alert("c")
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
addLoadEvent(t);
addLoadEvent(b);
addLoadEvent(c);
//等价于 window.onload =function() { t(); b(); c() ;}
Auto refreshing properties from property files | Entelligentsia Blog
class AutoRefreshingProperties extends Properties{ private long LAST_LOADED = System.currentTimeMillis(); private List listeners = Collections.synchronizedList(new ArrayList()); public AutoRefreshingProperties(String absolutePathToPriopertiesFile) throws IOException{ this(null, absolutePathToPriopertiesFile); } public AutoRefreshingProperties(Properties defaults, String absolutePathToPriopertiesFile) throws IOException{ super(defaults); load(absolutePathToPriopertiesFile); } public AutoRefreshingProperties removeListener(FileChangeListener listener){ listeners.remove(listener); return this; } public AutoRefreshingProperties addListener(FileChangeListener listener){ listeners.add(listener); return this; } public synchronized void load(String absoluteFilePath) throws IOException { InputStream is = new FileInputStream(new File(absoluteFilePath)); this.load(is); LAST_LOADED = System.currentTimeMillis(); keepUpdated(absoluteFilePath); } abstract class FileWatcher implements Runnable{} private void keepUpdated(final String absoluteFilePath){ Executors.newSingleThreadExecutor().submit( new FileWatcher(){ @Override public void run() { try { while(true){ if (new File(absoluteFilePath).lastModified() > LAST_LOADED){ InputStream is = new FileInputStream(new File(absoluteFilePath)); load(is); LAST_LOADED = System.currentTimeMillis(); notifyListeners(); } Thread.yield(); Thread.sleep(2000); } } catch (Exception e) { e.printStackTrace(); } } } ); } private void notifyListeners(){ final Properties properties = new Properties(this); for (FileChangeListener aListener : listeners){ aListener.notifyFileChanged(properties); } }}Using Multiple "buttons" Elements in IE6
IE6下点击类型为submit的Button,其他未点击的button也会提交,导致某些程序有问题,下面是一种解决办法。
Save this as buttonfix.js
function buttonfix() {
var buttons = document.getElementsByTagName('button');
for (var i=0; i<buttons.length; i++) {
if(buttons[i].onclick) continue;
buttons[i].onclick = function () {
for(j=0; j<this.form.elements.length; j++)
if( this.form.elements[j].tagName == 'BUTTON' )
this.form.elements[j].disabled = true;
this.disabled=false;
this.value = this.attributes.getNamedItem("value").nodeValue ;
}
}
}
window.attachEvent("onload", buttonfix);
On each page which you need the fix, include the following:
<!--[if lt IE 7]>
<script type="text/javascript" src="buttonfix.js"></script>
<![endif]-->
If the problem is also present in IE7, instead use:
<!--[if IE]>
<script type="text/javascript" src="buttonfix.js"></script>
<![endif]-->
