日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

判斷事件是不是發(fā)生在某組件中的 JS 函數(shù) - BeanSoft‘s Java Blog ...

 ShangShujie 2007-04-25

 

在實(shí)現(xiàn)某些功能, 例如只在某 DIV 上面彈出右鍵菜單的時(shí)候, 這個(gè)函數(shù)可以用一下(忘了從哪里看到以及改造的..抱歉), 僅供參考用, 用一些 JS 組件庫(kù)應(yīng)該可以更方便的實(shí)現(xiàn):

// Discover browser info {{{
var browserInfo = new Object();
var sAgent = navigator.userAgent.toLowerCase() ;

browserInfo.IsIE = ( sAgent.indexOf("msie") != -1 ) ;
browserInfo.IsGecko = !browserInfo.IsIE ;
browserInfo.IsSafari = ( sAgent.indexOf("safari") != -1 ) ;
browserInfo.IsNetscape = ( sAgent.indexOf("netscape") != -1 ) ;
// End of browser info }}}

 

/**
* Check if the event is happent in the element.
* @param event - event object
* @param element - the element of the document
*
* @author beansoft
* @version 1.0 2006-04-30
*/
function checkEventIn(event, element)
{
if(!event) {
event = window.event;
}

var e;

if(browserInfo.IsGecko) {
e = event.target;
} else {
e = event.srcElement;
}

while ( e )
{
if ( e == element ) return true;
e = e.parentNode ;
}

return false;
}

 

下面是一個(gè)判斷只有在某組件(組件名為‘父組件‘)點(diǎn)擊了鼠標(biāo)右鍵后才彈出自定義菜單的代碼(彈出菜單為一個(gè) ID 為 popup 的 DIV, 在其他地方則只彈出瀏覽器自帶菜單的示例代碼:

 

var oncontextmenu = function(e)
{
// Make sure popup only displays on codeman_js_tree
if(checkEventIn(e, $(‘父組件‘)) == false) {
return;
}

if(!e) {
e = window.event;
}

if(browserInfo.IsGecko) {
try {
e.preventDefault();
} catch(ex) {
}
}

$(‘popup‘).style.left = e.clientX + ‘px‘;
$(‘popup‘).style.top = e.clientY + ‘px‘;
$(‘popup‘).style.display = "";

return false;
};

 

// IE

try {
  $(‘父組件‘.oncontextmenu = oncontextmenu;
} catch(ex) {
}

// Gecko

if(browserInfo.IsGecko) {
try {
$(父組件‘).addEventListener(
‘contextmenu‘, oncontextmenu, true);
} catch(ex) {
}

}

posted on 2007-04-24 16:56 BeanSoft 閱讀(429) 評(píng)論(4)  編輯 收藏 引用 所屬分類(lèi): Web

評(píng)論:
# re: 判斷事件是不是發(fā)生在某組件中的 JS 函數(shù) 2007-04-24 17:11 | BeanSoft
不好意思漏了:
/*
Fetch a DOM object based on it‘s id
objId - a object‘s id string
*/
function $(objId) {
return document.getElementById(objId);
}

完全可以用 Prototype 里面的 $ 代替.  回復(fù)  更多評(píng)論
  
# re: 判斷事件是不是發(fā)生在某組件中的 JS 函數(shù) 2007-04-25 16:01 | 交口稱(chēng)贊
在么,問(wèn)個(gè)問(wèn)題
你知道JBOSS怎么在一個(gè)服務(wù)器下,通過(guò)不同的端口對(duì)應(yīng)不同的項(xiàng)目。比如我起一個(gè)服務(wù)器,8080對(duì)應(yīng)test 8081對(duì)應(yīng)另一個(gè)test
  回復(fù)  更多評(píng)論
  
# re: 判斷事件是不是發(fā)生在某組件中的 JS 函數(shù) 2007-04-25 16:07 | BeanSoft
我知道 JBoss 可以整合 Tomcat, 所以我就以 Tomcat 為例, Tomcat 只需要修改 conf/server.xml 就可以實(shí)現(xiàn)監(jiān)聽(tīng)多個(gè)端口以及每個(gè)端口映射到不同的應(yīng)用目錄的目的, 舉個(gè)例子:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
...
<Engine name="Catalina" defaultHost="localhost">
...
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

</Host>
注意:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

這里可以加入多個(gè) Host, Connector 也可以多個(gè), 只不過(guò)注意新的 Connector 里面的 Host 里面的 appBase 不能都放到一個(gè)地方, 就可以了. 具體沒(méi)有試過(guò), 但是看過(guò)相關(guān)的資料.  回復(fù)  更多評(píng)論
  
# re: 判斷事件是不是發(fā)生在某組件中的 JS 函數(shù) 2007-04-25 16:30 | 交口稱(chēng)贊
ok,多謝,理論上jboss是和tomcat是一樣的
多謝啦,我去試試  回復(fù)  更多評(píng)論

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約