因此,對于漢文字符串來說,假如不期望把字符串編碼各式轉化成UTF-8各式的(比如原頁面和目的頁面的charset是一致的時候),只需求應用 escape。假如你的頁面是GB2312或者更多有聯系的編碼,而接受參數parameter的頁面是UTF-8編碼的,就要采用encodeURI或者encodeURIComponent。
文章詳細參考:http://www.cnblogs.com/neru/archive/2010/07/10/1774718.html
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
String params = request.getParameter("params");
params = URLDecoder.decode(params, "UTF-8");
String[] arr = new String[8];
if (params != null) {
arr = params.split(",");
}
request.setAttribute("arr", arr);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style media=print>
.Noprint {
display: none;
}
.PageNext {
page-break-after: always;
}
</style>
<style type="text/css">
.helpSpan{
margin-left:20px;
cursor:pointer;
display:inline-block;
color:blue;
}
</style>
<script type="text/javascript" src="<%=path%>/js/jquery-1.8.3.min.js"></script>
<title>打印單</title>
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>
<link rel="stylesheet" type="text/css"
href="css/gzjrzcjys/editFrame.css" />
<script type="text/javascript">
function print1(){
document.all.WebBrowser.ExecWB(6,6);
}
function wOpen(){
$("span.open").hide();
$("span.close").show();
$("#helpContent").show();
}
function wClose(){
$("span.open").show();
$("span.close").hide();
$("#helpContent").hide();
}
var hkey_root, hkey_path, hkey_key;
hkey_root = "HKEY_CURRENT_USER";
hkey_path = "\\software\\Microsoft\\Internet Explorer\\PageSetup\\";
//設置網頁打印的頁眉頁腳邊距為空
function pagesetup_null() {
try {
var RegWsh = new ActiveXObject("WScript.Shell");
hkey_key = "header";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
hkey_key = "footer";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
hkey_key = "margin_left";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "0.0");
hkey_key = "margin_right";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "0.0");
hkey_key = "margin_top";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "0.0");
hkey_key = "margin_bottom";
RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "0.0");
} catch (e) {
alert(e);
}
}
$(document).ready(function(){
pagesetup_null();
});
</script>
</head>
<body>
<div id="frame">
<div id="frame_title">線下資金轉入申請</div>
<div id="frame_content">
<table class="content">
<tr>
<th>收款銀行:</th>
<td><%=arr[0]%></td>
<th>收款方全稱:</th>
<td><%=arr[1]%></td>
</tr>
<tr>
<th>收款方銀行賬號:</th>
<td><%=arr[2]%></td>
<th>充值碼:</th>
<td><%=arr[3]%>(填寫在備注欄)</td>
</tr>
<tr>
<th>匯款銀行:</th>
<td><%=arr[4]%></td>
<th>匯款方全稱:</th>
<td><%=arr[5]%></td>
</tr>
<tr>
<th>匯款賬號:</th>
<td><%=arr[6]%></td>
<th>匯款金額:</th>
<td><%=arr[7]%> 元</td>
</tr>
</table>
</div>
<div id="frame_bottom" class="Noprint">
<a href="javascript:void(0)" class="button_toRound"><span
style="font-size:14px;"
onclick="print1()" class="Noprint">【打印】</span>
</a>
</div>
<div style="padding:12px 5px;background-color:#ffffff" class="Noprint">
備注: 請到網銀或者銀行辦理轉賬業務,轉賬匯款時,信息必須如實填寫,以避免無法如實到賬而給您的投資造成損失!</div>
</div>
<div style="width:750px;margin:auto;margin-top:150px;" class="Noprint">
<div>友情鏈接:</div>
<div>
<table class="content">
<tr>
<td><a href=" </td>
<td><a href=" target="_blank">建設銀行</a>
</td>
<td><a href=" </td>
<td><a href=" </td>
</tr>
<tr>
<td><a href=" target="_blank">光大銀行</a>
</td>
<td><a
href=" target="_blank">交通銀行</a>
</td>
<td><a href=" target="_blank">興業銀行</a>
</td>
<td><a href=" target="_blank">郵政儲蓄</a>
</td>
</tr>
</table>
</div>
</div>
<div style="width:750px;margin:auto;margin-top:50px;" class="Noprint">
<div>幫助:點擊【打印】按鈕沒有反應。<span class="open helpSpan" onclick="wOpen()">>>>展開</span><span onclick="wClose()" class="close helpSpan" style="display:none;"><<<收起</span></div>
<div id="helpContent" style="display:none;">
<p>需要將本站點添加為信任站點。共分為三步。</p>
<p>第一步:打開IE瀏覽器的 Intenet選項</p>
<div><img src="<%=path%>/images/open_Intenet_ie8.jpg"/></div>
<p>或者</p>
<div><img src="<%=path%>/images/open_Intenet_ie11.jpg"/></div>
<p style="margin-top:20px;">第二步:添加信任站點</p>
<div><img src="<%=path%>/images/setXinren_ie11.jpg"/></div>
<p style="margin-top:20px;">第三步:允許控件運行</p>
<div><img src="<%=path%>/images/setActive.jpg"/></div>
</div>
</div>
<!--endprint-->
</body>
</html>
代碼中所需圖片如下:
ManipFiles();
//CreateFile();
alert("Ok! Write Over!");
</script>
要使程序可以運行必須引入JSON-lib包,JSON-lib包同時依賴于以下的JAR包:
JSON-lib包是一個beans,collections,maps,java arrays 和XML和JSON互相轉換的包。在本例中,我們將使用JSONObject類創建JSONObject對象,然后我們打印這些對象的值。為了使用 JSONObject對象,我們要引入"net.sf.json"包。為了給對象添加元素,我們要使用put()方法。
package jsontest;
輸出結果
是否為數組:false, 是否為空:false, isNullObject:false
添加屬性后的對象:{"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"夢中心境","address":"福建省廈門市"}
{"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"夢中心境","address":"福建省廈門市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
返回一個JSONArray對象:["this is a jsonArray value","another jsonArray value"]
結果={"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"夢中心境","address":"福建省廈門市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
username==>huangwuyi
qq=413425430
package jsontest;輸出結果:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JSONTest {
public static void main(String args[])
{
JSONObject jsonObj0 = new JSONObject();
JSONObject jsonObj = new JSONObject();
JSONObject jsonObj2 = new JSONObject();
JSONObject jsonObj3 = new JSONObject();
JSONArray jsonArray = new JSONArray();
//創建jsonObj0
jsonObj0.put("name0", "zhangsan");
jsonObj0.put("sex1", "female");
System.out.println("jsonObj0:"+jsonObj0);
//創建jsonObj1
jsonObj.put("name", "xuwei");
jsonObj.put("sex", "male");
System.out.println("jsonObj:"+jsonObj);
//創建jsonObj2,包含兩個條目,條目內容分別為jsonObj0,jsonObj1
jsonObj2.put("item0", jsonObj0);
jsonObj2.put("item1", jsonObj);
System.out.println("jsonObj2:"+jsonObj2);
//創建jsonObj3,只有一個條目,內容為jsonObj2
jsonObj3.element("j3", jsonObj2);
System.out.println("jsonObj3:"+jsonObj3);
//往JSONArray中添加JSONObject對象。發現JSONArray跟JSONObject的區別就是JSONArray比JSONObject多中括號[]
jsonArray.add(jsonObj);
System.out.println("jsonArray:"+jsonArray);
JSONObject jsonObj4 = new JSONObject();
jsonObj4.element("weather", jsonArray);
System.out.println("jsonObj4:"+jsonObj4);
}
}
jsonObj0:{"name0":"zhangsan","sex1":"female"}
jsonObj:{"name":"xuwei","sex":"male"}
jsonObj2:{"item0":{"name0":"zhangsan","sex1":"female"},"item1":{"name":"xuwei","sex":"male"}}
jsonObj3:{"j3":{"item0":{"name0":"zhangsan","sex1":"female"},"item1":{"name":"xuwei","sex":"male"}}}
jsonArray:[{"name":"xuwei","sex":"male"}]
jsonObj4:{"weather":[{"name":"xuwei","sex":"male"}]}
關于java bean的處理
創建java對象:
public class Address {
private String road;
private String streate;
private String provience;
private String no;
public String getRoad() {
return road;
}
public void setRoad(String road) {
this.road = road;
}
public String getStreate() {
return streate;
}
public void setStreate(String streate) {
this.streate = streate;
}
public String getProvience() {
return provience;
}
public void setProvience(String provience) {
this.provience = provience;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
}
1.將json對象轉化為java對象
JSONObject jsonObject = JSONObject.fromObject("{\"no\":\"104\",\"provience\":\"陜西\",\"road\":\"高新路\",\"streate\":\"\"}");
Address Address = (Address) JSONObject.toBean(jsonObject,Address.class);
log.info(Address.getNo());
log.info(Address.getStreate());
log.info(Address.getProvience());
log.info(Address.getRoad());
2.將java對象轉化為json對象
將java對象轉化為json對象:
Address address = new Address();
address.setNo("104");
address.setProvience("陜西");
address.setRoad("高新路");
address.setStreate("");
JSONArray json = JSONArray.fromObject(address);
log.info(json.toString());
將java對象list轉化為json對象:
Address address = new Address();
address.setNo("104");
address.setProvience("陜西");
address.setRoad("高新路");
address.setStreate("");
Address address2 = new Address();
address2.setNo("105");
address2.setProvience("陜西");
address2.setRoad("未央路");
address2.setStreate("張辦");
List list = new ArrayList();
list.add(address);
list.add(address2);
JSONArray json = JSONArray.fromObject(list);
log.info(json.toString());
3.JSONArray轉化為list
JSONObject jsonObject = JSONObject.fromObject("{\"no\":\"104\",\"provience\":\"陜西\",\"road\":\"高新路\",\"streate\":\"\"}");
JSONArray jsonArray = new JSONArray();
jsonArray.add("{\"no\":\"104\",\"provience\":\"陜西\",\"road\":\"高新路\",\"streate\":\"\"}");
jsonArray.add("{\"no\":\"104\",\"provience\":\"陜西\",\"road\":\"高新路\",\"streate\":\"123\"}");
Object object = JSONArray.toList(jsonArray,Address.class);
轉載:http://www.cnblogs.com/hitwtx/articles/2468633.html
}
function GetCooki(offset)
{
var endstr = document.cookie.indexOf(";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return decodeURIComponent(document.cookie.substring(offset, endstr));
}
function DelCookie(name) {
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = GetCookie(name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString()+"; path=/"; //不斷的嘗試曾經使用過的path值
}
function GetCookie(name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCooki(j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return null;
}
另外推薦2個文章:
http://www.mzone.cc/article/363.html
觀察發現,IE6、IE7 顯示效果基本相同,算是顯示比較正常的效果,IE8、safari 和火狐顯示效果基本相同,兩個文字都偏下,而opera稍偏下。在之前我的解決方法,都是通過文字外面套上另外的標簽,等,通過調整input標簽和label的html標簽來對齊,大概方法即是讓input 和label 標簽都左浮動,但前提一定是在寫頁面的時候,文字外面加了label 標簽,這種方法應為定義了大量的浮動,還需要清除浮動,才能保證下面頁面的正常顯示,或者有些人用相對定位等方法,如果文字外面沒有套label標簽,更沒有其他標簽呢?經過查找,發現其實還是有很簡單的方法就能解決問題
方法一:如果將font-family中的第一個字體設置為Tahoma,則可以實現對齊(Verdana等字體也可以)。次方法來源與 藍色理想 http://www.blueidea.com/tech/web/2009/6910_3.asp
如果文字外面有label 標簽,只要定義input,label {vertical-align:middle} 即可,
注意:因為單選框或是復選框有外邊距,所以需要先去除掉他的外邊距。
方法二: 定義input 標簽vertical-align 屬性,調整input 的上下邊距,來實現input和文字的水平對齊
.admin_more input{vertical-align: text-bottom; margin-bottom:2px; *margin-bottom:-2px;}
原文:
在WdatePicker.js配置文件,里面有個$crossFrame,默認是true改為問題$crossFrame:false就解決了。希望對大家有幫助!
官方對此字段的解釋是 是否跨框架,一般設置為true即可,遇到跨域錯誤時可以將此功能關閉。
2011-04-21
對cookies的操作在當訪問一個網站就無時無刻的都伴隨著我們,記錄著我們的一舉一動,并將不危害用戶隱私的信息,將以保存,這樣用戶就不用去從新再次操作重復的步驟,這樣大大方便了客戶,也增加了客戶對網站的回頭率。
jquery.cookie.js 提供了jquery中非常簡單的操作cookie的方法。
這個插件默認的過期是按天數計算的,我們可以修改下,按毫秒計算,修改如下:
1 | if ( typeof options.expires === 'number' ) { |
2 | //var days = options.expires, t = options.expires = new Date(); |
3 | //t.setDate(t.getDate() + days); |
4 | var seconds = options.expires, t = options.expires = new Date(); |
5 | t.setTime(t.getTime() + seconds); |
6 | //t.setTime(t.getTime() + days); |
7 | //date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000)); |
8 | } |
下面舉個簡單的例子:我們需要對某個頁面進行閱讀統計,但是呢,在一段時間里(比如5分鐘),同一個人無論刷新了這個頁面多少次都好,都只能算一次。這個時候可以借助cookie來實現:
01 | <script language= "javascript" src= " |
02 | <script type= "text/javascript" src= " |
03 | <script language= "javascript" src= " |
04 | <script type= "text/javascript" > |
05 | // 頁面類型,標識一組頁面 |
06 | var pageType = 20110420; |
07 | // 頁面id,標識唯一一個頁面 |
08 | var url = window.location.href; |
09 | var url_arr = url.split( "." ); |
10 | var id = url_arr[url_arr.length - 2]; |
11 | //var id = 2; |
12 | //var cookie = $.cookie('the_cookie'+id, true, { expires: 5/24/60/60 }); |
13 | |
14 | $(document).ready( function (){ |
15 | init_count(pageType, id); |
16 | }) |
17 | |
18 | // 初始化數據,同一個cookie一分鐘的訪問量都算一次 |
19 | function init_count(pageType, id){ |
20 | if ($.cookie( 'the_cookie' +id)){ |
21 | //alert("cookie已存在"); |
22 | getViewData(pageType, id); |
23 | } |
24 | else |
25 | { |
26 | // 1分鐘過期 |
27 | var cookie = $.cookie( 'the_cookie' +id, 'Gonn' , { expires: 1000 * 60 * 5 }); |
28 | //$.cookie('the_cookie'+id, 'Gonn'); |
29 | //var cookie = $.cookie('the_cookie'+id); |
30 | //alert(cookie); |
31 | insert_page(pageType, id); |
32 | |
33 | } |
34 | } |
35 | |
36 | // 不插入與更新時統計訪問量 |
37 | function getViewData(pageType, id){ |
38 | $.ajax({ |
39 | type: "get" , //使用get方法訪問后臺 |
40 | dataType: "jsonp" , //返回json格式的數據 |
41 | jsonp: "callback" , |
42 | url: " |
43 | data:{ "opp" : "view" , "pageType" :pageType, "id" :id}, |
44 | async: false , |
45 | success: function (data){ |
46 | //alert(data.total); |
47 | $( '#pc_1' ).html(data.total); |
48 | $( '#pcm_1' ).html(data.record); |
49 | } |
50 | }) |
51 | } |
52 | |
53 | // 插入或者更新頁面統計 |
54 | function insert_page(pageType, id){ |
55 | var j = null ; |
56 | $.ajax({ |
57 | type: "get" , //使用get方法訪問后臺 |
58 | dataType: "jsonp" , //返回json格式的數據 |
59 | jsonp: "callback" , |
60 | url: " |
61 | data:{ "opp" : "insert" , "pageType" :pageType, "id" :id}, |
62 | async: false , |
63 | success: function (data){ |
64 | //alert(msg.current); |
65 | //alert(msg.record); |
66 | j = data; |
67 | //alert("111"); |
68 | //alert(j.total); |
69 | $( '#pc_1' ).html(data.total); |
70 | $( '#pcm_1' ).html(data.record); |
71 | } |
72 | }) |
73 | } |
74 |
75 | </script> |
代碼就直接原汁原味地貼上來吧,做個記錄。
原文:http://www.nowamagic.net/jquery/jquery_JqueryCookie.php
上面代碼非常簡單我們一般會認為document.getElementById("content1").value這樣就可以取值了,但事實上并不是這樣,通過這種方式取值,只能取到初始值,當編輯器的內容變化時是取不到的,為什么呢?為什么后臺程序可以取得到編輯器中的值呢,<%=request.getParameter("content1")%>這里是可以取到編輯器中的內容的,但是document.getElementById("content1").value確不可以。看來eWebEditor在js中動了手腳,一定是動態幫定了提交事件,或動態綁定了在源碼中搜索onsubmit找到如下代碼,原來動態的綁定了onsubmit事件,這樣每次在提交前會執行AttachSubmit函數
oForm.attachEvent("onsubmit", AttachSubmit) ;
if (! oForm.submitEditor) oForm.submitEditor = new Array() ;
oForm.submitEditor[oForm.submitEditor.length] = AttachSubmit ;
if (! oForm.originalSubmit) {
oForm.originalSubmit = oForm.submit ;
oForm.submit = function() {
if (this.submitEditor) {
for (var i = 0 ; i < this.submitEditor.length ; i++) {
this.submitEditor[i]() ;
}
}
this.originalSubmit() ;
}
}
function AttachSubmit() {
var oForm = oLinkField.form ;
if (!oForm) {return;}
var html = getHTML();
ContentEdit.value = html;
if (sCurrMode=="TEXT"){
html = HTMLEncode(html);
}
splitTextField(oLinkField, html);
}
AttachSubmit就是copy編輯器的內容到隱藏域控件中的過程。
知道了過程我們的問題就不難解決了。只需在取編輯器內容之前執行下AttachSubmit即可
function validateForm(){
window.frames["eWebEditor1"].AttachSubmit();//執行iframe頁面中的AttachSubmit函數
if(document.getElementById("content1").value!=""){
document.getElementById("myform").submit();
}else{
alert("空");
}
}
var URLParams = new Object() ;
var aParams = document.location.search.substr(1).split('&') ;
for (i=0 ; i < aParams.length ; i++) {
var aParam = aParams[i].split('=') ;
URLParams[aParam[0]] = aParam[1] ;
}
var sLinkFieldName = URLParams["id"] ;
var sExtCSS = URLParams["extcss"] ;
var sFullScreen = URLParams["fullscreen"];
var config = new Object() ;
config.StyleName = (URLParams["style"]) ? URLParams["style"].toLowerCase() : "coolblue";
config.CusDir = URLParams["cusdir"];
config.ServerExt = "jsp";
解析url的方法,這種方法以前koko跟我說過一回,今天在ewebeditor中又看到了,看來是一種比較常規的分析URL參數的方法。
總結:其實eWebEditor只是修改了提交表單的兩個事件,在提交表單前進行值copy,從而避免了編輯器每次更新都同步值這種沒有必要的操作。
結果我在IE環境下放大窗口 resize 事件執行了兩次。后來我在谷歌和百度上面查詢了下, 都存在IE環境下執行兩次的相關信息。最后發現一個很不錯的解決方案。 國外有個哥子寫了個插件專門針對Jquery.resize()事件增強了。 地址在這里:http://benalman.com/projects/jquery-resize-plugin/ 在添加jquery.js之后在添加 "jquery.ba-resize.js" 就可以了。
js:parseInt(7/2)
2.向上取整,有小數就整數部分加1
js: Math.ceil(7/2)
3,四舍五入.
js: Math.round(7/2)
4,向下取整
js: Math.floor(7/2)
詳細出處參考:http://www.jb51.net/article/23398.htm
通過for...in...遍歷一個對象實例的所有屬性,只有基本類型的屬性值會顯示出來,如果一個對象的屬性是object則提示的是此屬性的類型,可以使用嵌套的for...in...語句實現完全遍歷。
replace()
The replace() method returns the string that results when you replace text matching its first argument
(a regular expression) with the text of the second argument (a string).
If the g (global) flag is not set in the regular expression declaration, this method replaces only the first
occurrence of the pattern. For example,
var s = "Hello. Regexps are fun.";s = s.replace(/\./, "!"); // replace first period with an exclamation pointalert(s);
produces the string “Hello! Regexps are fun.” Including the g flag will cause the interpreter to
perform a global replace, finding and replacing every matching substring. For example,
var s = "Hello. Regexps are fun.";s = s.replace(/\./g, "!"); // replace all periods with exclamation pointsalert(s);
yields this result: “Hello! Regexps are fun!”
所以可以用以下幾種方式.:
string.replace(/reallyDo/g, replaceWith);
string.replace(new RegExp(reallyDo, 'g'), replaceWith);
string:字符串表達式包含要替代的子字符串。
reallyDo:被搜索的子字符串。
replaceWith:用于替換的子字符串。
http://blog.chinaunix.net/uid-22414998-id-2892370.html
http://www.jb51.net/web/36856.html
定義和用法
<!DOCTYPE> 聲明位于文檔中的最前面的位置,處于 <html> 標簽之前。此標簽可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規范。
該標簽可聲明三種 DTD 類型,分別表示嚴格版本、過渡版本以及基于框架的 HTML 文檔。
以下面這個 <!DOCTYPE> 標簽為例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">在上面的聲明中,聲明了文檔的根元素是 html,它在公共標識符被定義為 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中進行了定義。瀏覽器將明白如何尋找匹配此公共標識符的 DTD。如果找不到,瀏覽器將使用公共標識符后面的 URL 作為尋找 DTD 的位置。