⑴ JavaWeb:後台判斷是手機登陸還是Pc登陸
兩種方式:第一種用在頁面,第二種用java過濾器
頁面用jq判斷,單獨建立一個js文件,哪個頁面使用,就引入哪個頁面,一般為首頁。引用時,記得先引用jquery
$(function() {
var tag = isMobile(); // true為PC端,false為手機端
if (tag) {
alert("手機");
console.info("手機")
}
});
function isMobile() {
var userAgentInfo = navigator.userAgent;
var mobileAgents = [ "Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod" ];
var mobile_flag = false;
// 根據userAgent判斷是否是手機
for (var v = 0; v < mobileAgents.length; v++) {
if (userAgentInfo.indexOf(mobileAgents[v]) > 0) {
console.info("chenk userAgent")
mobile_flag = true;
break;
}
}
var screen_width = window.screen.width;
var screen_height = window.screen.height;
// 根據屏幕解析度判斷是否是手機
if (screen_width < 500 && screen_height < 800) {
console.info("check screen")
mobile_flag = true;
}
return mobile_flag;
}
過濾器方式:filter
public class IsMobile implements Filter {
/**
* Default constructor.
*/
public boolean IsMobileCheck(ServletRequest sRequest) {
HttpServletRequest request = (HttpServletRequest)sRequest;
boolean isMoblie = false;
String[] mobileAgents = { "iphone", "android", "phone", "mobile",
"wap", "netfront", "java", "opera mobi", "opera mini", "ucweb",
"windows ce", "symbian", "series", "webos", "sony",
"blackberry", "dopod", "nokia", "samsung", "palmsource", "xda",
"pieplus", "meizu", "midp", "cldc", "motorola", "foma",
"docomo", "up.browser", "up.link", "blazer", "helio", "hosin",
"huawei", "novarra", "coolpad", "webos", "techfaith",
"palmsource", "alcatel", "amoi", "ktouch", "nexian",
"ericsson", "philips", "sagem", "wellcom", "bunjalloo", "maui",
"smartphone", "iemobile", "spice", "bird", "zte-", "longcos",
"pantech", "gionee", "portalmmm", "jig browser", "hiptop",
"benq", "haier", "^lct", "320x320", "240x320", "176x220",
"w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq",
"bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang",
"doco", "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi",
"keji", "leno", "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo",
"midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-",
"newt", "noki", "oper", "palm", "pana", "pant", "phil", "play",
"port", "prox", "qwap", "sage", "sams", "sany", "sch-", "sec-",
"send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar",
"sony", "sph-", "symb", "t-mo", "teli", "tim-", "tosh", "tsm-",
"upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp",
"wapr", "webc", "winw", "winw", "xda", "xda-",
"Googlebot-Mobile" };
if (request.getHeader("User-Agent") != null) {
for (String mobileAgent : mobileAgents) {
if (request.getHeader("User-Agent").toLowerCase()
.indexOf(mobileAgent) >= 0) {
isMoblie = true;
break;
}
}
}
return isMoblie;
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest sRequest, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("手機檢查");
HttpServletRequest request = (HttpServletRequest)sRequest;
if (IsMobileCheck(request)) {
((HttpServletResponse)response).sendRedirect(request.getContextPath() + "/wap/index.jsp");
return;
} else {
}
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
⑵ jquery如何獲取div中li元素
1、通過過濾器獲取li數組
varlis=$('divli');//表示獲取div下所有的直接或者非直接li節點。
2、循環lis方式獲取每個li元素
for(vari=0;i<lis.length;i++){
varli=lis[i];//獲取每個li元素
}
⑶ scandir第三個參數filter是過濾用的嗎
最近發現了jquery的.filter()方法,這真是一個很強大的方法,最強大之處在於,他可以接受一個函數作為參數,然後根據函數的返回值判斷,如果返回值是true,這個元素將被保留,如果返回值是false,這個元素將被剔除。這就是jquery選擇器的過濾器。
空說無用,我們展示一下
復制代碼代碼如下:
<body>
<p>你好啊,今天及多大了啊</p>
<p><span>為什麼要告訴你</span></p>
</body>
如果我們要選擇有一個<span>子元素的<p>元素,平常我都是這么寫的
復制代碼代碼如下:
$("p>span").parent();
現在藉助於.filter()我們可以寫成這個樣子:
復制代碼代碼如下:
$("p").filter(function(index){
return $(this).find("span").size();
});
雖然看起來有些麻煩,但是他提供了我們一種極其強大的自定義查找元素的功能,我們可以傳遞一個函數,然後藉助jquery的隱式迭代,來實現查找。
⑷ jquery自定義過濾器的正則表達式怎麼使用
匹配p標簽中的文本滿足
apple、orange、lemon三組單詞任意一組全部相等返回返回ture。
比如
<p>apple</p>
結果返回ture,
<p>apple1</p>返回false
⑸ 怎麼自定義shiro中的過濾器來允許ajax請求後台數據
自定義過濾器:
public class extends FormAuthenticationFilter {
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
if (isLoginRequest(request, response)) {
if (isLoginSubmission(request, response)) {
return executeLogin(request, response);
} else {
// 放行 allow them to see the login page ;)
return true;
}
} else {
HttpServletRequest httpRequest = WebUtils.toHttp(request);
if (ShiroFilterUtils.isAjax(httpRequest)) {
HttpServletResponse httpServletResponse = WebUtils.toHttp(response);
httpServletResponse.sendError(ShiroFilterUtils.HTTP_STATUS_SESSION_EXPIRE);
return false;
} else {
saveRequestAndRedirectToLogin(request, response);
}
return false;
}
}
/**
* 判斷ajax請求
* @param request
* @return
*/
boolean isAjax(HttpServletRequest request){
return (request.getHeader("X-Requested-With") != null && "XMLHttpRequest".equals( request.getHeader("X-Requested-With").toString()) ) ;
}
}
封裝ajax
var Error = function () {
return {
// 初始化各個函數及對象
init: function () {
},
// 顯示或者記錄錯誤
displayError: function(response, ajaxOptions, thrownError) {
if (response.status == 404) {// 頁面沒有找到
pageContent.load($("#hdnContextPath").val() + "/page/404.action");
} else if (response.status == 401) {// session過期
SweetAlert.errorSessionExpire();
} else if (response.status == 507) {// 用戶訪問次數太頻繁
SweetAlert.error("您的訪問次數太頻繁, 請過一會再試...");
} else {//其他錯誤
window.location = $("#hdnContextPath").val() + "/page/500.action";
}
console.log(thrownError);
}
};
}();
jQuery(document).ready(function() {
Error.init();
});
JS的引用處如下:
App.blockUI();
$.ajax({
url: $("#hdnContextPath").val() + "/feedback/queryFeedBackDetail.action",
type: "POST",
async: false,
data: {"feedbackId": feedbackId, "userId": userId, "status": status},
success: function(data) {
// 忽略
⑹ jquery unbind 和off的區別
1:unbind():為每個匹配元素的特定事件綁定事件處理函數。
unbind(type,[data],fn)
type: 含有一個或多個事件類型的字元串,由空格分隔多個事件。
比如"click"或"submit",還可以是自定義事件名。
data:作為event.data屬性值傳遞給事件對象的額外數據對象
fn:綁定到每個匹配元素的事件上面的處理函數
2:off()在選擇元素上綁定一個或多個事件的事件處理函數。
off(events,[selector],[data],fn)
events:一個或多個用空格分隔的事件類型和可選的命名空間,如"click"或"keydown.myPlugin" 。
selector:一個選擇器字元串用於過濾器的觸發事件的選擇器元素的後代。如果選擇的< null或省略,當它到達選定的元素,事件總是觸發。
data:當一個事件被觸發時要傳遞event.data給事件處理函數。
fn:該事件被觸發時執行的函數。 false 值也可以做一個函數的簡寫,返回false。
對比發現off 和unbind的 差別不大, 但是off多一個[selector] 可以過濾指定元素。
另外,查看jQuery源碼可知,.unbind()是通過.off()來實現的
⑺ jquery 的過濾器函數怎麼寫
JS代碼
1.DOM對象與JQuery包裝集
1.通過document.getElementById(),document.getElementsByName()等取的就是DOM對象或DOM對象集,前者取的是對象,後者取得DOM對象集
vartext11_dom=document.getElementById("text11");
vartext11_dom=document.getElementsByName("text11")[0];
vartext11_dom=document.all.text11;//此處text11即可以是name值也可以是id值
vartext11_dom=document.all[10];
2.如果要使用JQuery提供的函數首先要構造JQuery包裝集,通過$()返回的即是JQuery包裝集。
vartext11_jquery=$("#text11");
2.JQuery包裝集與DOM對象互相轉換
1.DOM對象不能使用JQuery屬性方法,但DOM對象可以通過$()轉換成JQuery包裝集
vartext11_dom=document.getElementById("text11");
vartext11_jquery=$(text11_dom);
2.JQuery包裝集可以使用部分DOM對象的屬性方法如.length,但也有個別屬性方法不能使用如.value,可以通過在JQuery包裝集後面加中括弧及索引值獲取對應DOM對象
vartext11_dom=$("#text11")[0];
3.在each循環時或觸發事件時的this也是DOM對象
$("#text11").click(function(){
vartext11_dom_value=this.value;
alert(text11_dom_value);
});
3.$符號在JQuery中代表對JQuery對象的引用,JQuery的核心方法有四個
1.jQuery(html[,ownerDocument]):根據HTML原始字元串動態創建Dom元素
$("<div><p>Hello!</p></div>").appendTo("body");
2.jQuery( elements ):將一個或多個Dom對象封裝為jQuery包裝集,就是上面的DOM對象與JQuery包裝集轉換
3.jQuery( callback ):$(document).ready()的簡寫方式
$(function(){
alert("Hello!");
});
4.JQuery(selector[,context]):在指定范圍內查找符合條件的JQuery包裝集,context為查找范圍,context可以是DOM對象集也可以是JQuery包裝集
在所有tr標簽中查找id為text11元素的JQuery包裝集
vartext11_query=$("#text11","tr");
===================jQuery選擇器===================
1. 基礎選擇器 Basics
1.根據標簽名進行選擇
varinput_query=$("input");
2.根據id值選取
vartext11_query=$("#text11");
3.根據class值進行選取
vartext11_query=$(".text11");
4.同時選擇多個符合條件的JQuery包裝集用,號分隔條件
vartext_query=$("#text11,.text12");
5.選擇所有DOM元素
varall_query=$("*");
2.層次選擇器 Hierarchy
1.從所有tr標簽中獲取其下面的所有id值為text11的元素
vartext11_query=$("tr #text11");
2.獲取所有td標簽下的所有直接input子元素
varinput_query=$("td>input");
3.獲取id為text11元素後面的class為button11元素,只獲取一個符合條件的元素。text11與button11在地位上屬於同級關系
varbutton11_query=$("#text11+.button11");
4.獲取id為text11元素後面的所有class為button11的元素
varbutton11_query=$("#text11~.button11");
3.基本過濾器 Basic Filters
1.獲取第一個input元素
varinput_query=$("input:first");
2.獲取最後一個input元素
varinput_query=$("input:last");
3.獲取所有未被選中的input元素
varinput_query=$("input:not(:checked)");
4.第一個input元素算一,查找所有第奇數個的input元素
varinput_query=$("input:even");
5.從第二個input算起,查找所有第偶數個的input元素
varinput_query=$("input:odd");
6.查找索引為1的input元素,索引值從0算起
varinput_query=$("input:eq(1)");
7.查找索引大於0的所有input元素
varinput_query=$("input:gt(0)");
8.查找索引小於2的所有input元素
varinput_query=$("input:lt(2)");
9.獲取頁面所有<h>標題元素
varh_query=$(":header");
10.獲取所有正在執行動畫效果的元素
varanimated_query=$(":animated");
4. 內容過濾器 Content Filters
1.查找所有html內容含有"你好世界!"的h1元素
varh1_query=$("h1:contains('你好世界!')");
2.獲取所有不含子標簽或html內容為空的td元素
vartd_query=$("td:empty");
3.查找所有含有input子元素的td元素
vartd_query=$("td:has(input)");
4.查找所有含有子標簽或有html內容的td元素
vartd_query=$("td:parent");
5.可見性過濾器 Visibility Filters
1.查找所有隱藏的input元素
varinput_query=$("input:hidden");
2.查找所有可見的input元素
varinput_query=$("input:visible");
6.屬性過濾器 Attribute Filters
以下id,name等屬性名,也可換成其他屬性名,或自定義的屬性名
1.查找所有含有id屬性的input元素
varinput_query=$("input[id]");
2.查找name值為text11的input元素
varinput_query=$("input[name='text11']");
3.查找name值不等於text11的所有input元素
varinput_query=$("input[name!='text11']");
4.查找name值以text開頭的input元素
varinput_query=$("input[name^='text']");
5.查找name值以11結尾的所有input元素
varinput_query=$("input[name$='11']");
6.查找name值中含有ext的所有input元素
varinput_query=$("input[name*='ext']");
7.查找所有含有id屬性並且name值中含有ext的input元素
varinput_query=$("input[id][name*='ext']");
7.子元素過濾器 Child Filters
1.查找所有在父元素中的所有子元素中排第2的input元素
nth-child()里參數可選even在這里算偶數,odd在這里算奇數,n任意數即選取所有有父元素的input元素,數字是直接選排在第幾個的input元素,第一個input元素算一
varinput_query=$("input:nth-child(2)");
2.查找所有在父元素中的所有子元素中排第一的input元素
varinput_query=$("input:first-child");
3.查找所有在父元素中所有子元素中排最後一個的input元素
varinput_query=$("input:last-child");
4.查找所有在父元素中是唯一子元素的input元素
varinput_query=$("input:only-child");
8.表單選擇器 Forms
1.查找所有input元素
varinput_query=$(":input");
2.查找所有文本框元素
vartext_query=$(":text");
3.查找所有密碼框元素
varpassword_query=$(":password");
4.查找所有復選框
varcheckbox_query=$(":checkbox");
5.查找所有提交按鈕元素
varsubmit_query=$(":submit");
6.查找所有圖像域元素
varimage_query=$(":image");
7.查找所有重置按鈕元素
varreset_query=$(":reset");
8.查找所有按鈕元素
varbutton_query=$(":button");
9.查找所有文件域元素
varfile_query=$(":file");
9.表單過濾器 Form Filters
1.查找所有可用的input元素
varinput_query=$("input:enabled");
2.查找所有不可用的input元素
varinput_query=$("input:disabled");
3.查找所有選中的單選復選框
varinput_query=$("input:checked");
4.查找所有選中的下拉框
varoption_query=$("option:selected");
⑻ jquery自定義過濾器的正則表達式怎麼使用
匹配p標簽中的文本滿足 apple、orange、lemon三組單詞任意一組全部相等返回返回ture。
比如 <p>apple</p> 結果返回ture, <p>apple1</p>返回false
⑼ 如何通過jquery獲取選中按鈕的radio的value值
1、定義一個radio節點
<inputtype='radio'/>
2、通過過濾器獲取選中的radio
varselectR=$('input:radio:checked');//input表示標簽是input,:radio表示type是radio,:checked表示是選中
3、通過val獲取選中的值
varv=selectR.val();//獲取選中的值