iOS 與JS Html常見互動

張夢磊發表於2016-07-01

獲取所有html:NSString *lJs = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerHTML"];

獲取body:

 

[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText"];


去除某個屬性:
[webView stringByEvaluatingJavaScriptFromString:[NSStringstringWithFormat:@"document.images[%d].removeAttribute("width")", i]];
修改圖片的地址

[webView stringByEvaluatingJavaScriptFromString:@"document.images[0].src="http://www.baidu.com/W020110907540066716627.jpg";document.images[1].src="http://www.baidu.com/W020120807265226549111.jpg""];

 

[webView stringByEvaluatingJavaScriptFromString:[NSStringstringWithFormat:@"document.images[%d].src="%@"", i, imageName]];

教程:
http://www.w3school.com.cn/htmldom/met_doc_getelementsbytagname.asp
Document物件內容集合

document 文擋物件 - JavaScript指令碼語言描述
———————————————————————
注:頁面上元素name屬性和JavaScript引用的名稱必須一致包括大小寫
否則會提示你一個錯誤資訊 “引用的元素為空或者不是物件\\\\\”
———————————————————————

物件屬性
document.title //設定文件標題等價於HTML的title標籤
document.bgColor //設定頁面背景色
document.fgColor //設定前景色(文字顏色)
document.linkColor //未點選過的連結顏色
document.alinkColor //啟用連結(焦點在此連結上)的顏色
document.vlinkColor //已點選過的連結顏色
document.URL //設定URL屬性從而在同一視窗開啟另一網頁
document.fileCreatedDate //檔案建立日期,只讀屬性
document.fileModifiedDate //檔案修改日期,只讀屬性
document.fileSize //檔案大小,只讀屬性
document.cookie //設定和讀出cookie
document.charset //設定字符集 簡體中文:gb2312
———————————————————————
常用物件方法
document.write() //動態向頁面寫入內容
document_createElement_x_x_x_x_x_x(Tag) //建立一個html標籤物件
document.getElementByIdx_x_x_x_x_x_x(ID) //獲得指定ID值的物件
document.getElementsByName(Name) //獲得指定Name值的物件
document.body.a(oTag)
———————————————————————

 

body-主體子物件
document.body //指定文件主體的開始和結束等價於body>/body>
document.body.bgColor //設定或獲取物件後面的背景顏色
document.body.link //未點選過的連結顏色
document.body.alink //啟用連結(焦點在此連結上)的顏色
document.body.vlink //已點選過的連結顏色
document.body.text //文字色
document.body.innerText //設定body>…/body>之間的文字
document.body.innerHTML //設定body>…/body>之間的HTML程式碼
document.body.topMargin //頁面上邊距
document.body.leftMargin //頁面左邊距
document.body.rightMargin //頁面右邊距
document.body.bottomMargin //頁面下邊距
document.body.background //背景圖片

document.body.a(oTag) //動態生成一個HTML物件

常用物件事件
document.body.onclick=”func()” //滑鼠指標單擊物件是觸發
document.body.onmouseover=”func()” //滑鼠指標移到物件時觸發
document.body.onmouseout=”func()” //滑鼠指標移出物件時觸發
———————————————————————
location-位置子物件

document.location.hash // #號後的部分
document.location.host // 域名+埠號
document.location.hostname // 域名
document.location.href // 完整URL
document.location.pathname // 目錄部分
document.location.port // 埠號
document.location.protocol // 網路協議(http:)
document.location.search // ?號後的部分

documeny.location.reload() //重新整理網頁
document.location.reload(URL) //開啟新的網頁
document.location.assign(URL) //開啟新的網頁
document.location.replace(URL) //開啟新的網頁
———————————————————————
selection-選區子物件
document.selection
———————————————————————

images集合(頁面中的圖象)

a)通過集合引用
document.images //對應頁面上的img標籤
document.images.length //對應頁面上img標籤的個數
document.images[0] //第1個img標籤
document.images[i] //第i-1個img標籤

b)通過nane屬性直接引用
img name=”oImage”
document.images.oImage //document.images.name屬性

c)引用圖片的src屬性
document.images.oImage.src //document.images.name屬性.src

d)建立一個圖象
var oImage
oImage = new Image()
document.images.oImage.src=”1.jpg”
同時在頁面上建立一個img /標籤與之對應就可以顯示

———————————————————————-

forms集合(頁面中的表單)

a)通過集合引用
document.forms //對應頁面上的form標籤
document.forms.length //對應頁面上/formform標籤的個數
document.forms[0] //第1個/formform標籤
document.forms[i] //第i-1個/formform標籤
document.forms[i].length //第i-1個/formform中的控制元件數
document.forms[i].elements[j] //第i-1個/formform中第j-1個控制元件

b)通過標籤name屬性直接引用
/formform name=”Myform”>input name=”myctrl”/>/form
document.Myform.myctrl //document.表單名.控制元件名

c)訪問表單的屬性
document.forms[i].name //對應form name>屬性
document.forms[i].action //對應/formform action>屬性
document.forms[i].encoding //對應/formform enctype>屬性
document.forms[i].target //對應/formform target>屬性

document.forms[i].a(oTag) //動態插入一個控制元件
document.all.oDiv //引用圖層oDiv
document.all.oDiv.style.display=” //圖層設定為可視
document.all.oDiv.style.display=”none” //圖層設定為隱藏
document.getElementId(”oDiv”) //通過getElementId引用物件
document.getElementId(”oDiv”).style=”
document.getElementId(”oDiv”).display=”none”

圖層物件的4個屬性
document.getElementByIdx_x_x_x_x_x_x(”ID”).innerText //動態輸出文字
document.getElementByIdx_x_x_x_x_x_x(”ID”).innerHTML //動態輸出HTML
document.getElementByIdx_x_x_x_x_x_x(”ID”).outerText //同innerText
document.getElementByIdx_x_x_x_x_x_x(”ID”).outerHTML //同innerHTML

 

document.getElementsByName 和 document.getElementsByTagName   

 

當頁面上的控制元件同名且多個的時候,從程式的嚴密角度出發,需要判斷長度,而且有長度和沒長度是兩種引用方法.

oEle= document.all.aaa ;//這裡有一個aaa的物件,但我們不知道它現在長度是多少,所以沒辦法對它操作.因此,我們要先做判斷長度的過程.如下:

if(oEle.length){}else{};

在兩種情況下,花括號裡面的內容寫法也是不一樣的:

if(oEle.length){

for(var i = 0 ;i<oEle.length;i++){

oEle[i].value..

}

}

else{

oEle.value..

};

但是這樣寫是不是太複雜了點?而且當花括號裡面的程式碼比較多的時候,我們要寫兩遍程式碼,暈了先~

還好有

document.getElementsByName()

這個方法.它對一個和多個的處理是一樣的,我們可以用:

oEle = document.getElementsByName('aaa')

來引用

當oEle只有1個的時候,那麼就是oEle[0],有多個的時候,用下標法oEle[i]迴圈獲取,是不是很簡單?

值得一提的是它對Name和ID的同樣有效的. (它只能應用到document物件)

<div id=radiodiv language=javascript >

<INPUT name=radio1 value=1 type="radio">

<INPUT name=radio1 value=0 type="radio" CHECKED>

</div>

document.getElementsByName("radio1").item(0).value 結果是 1

但是.相對應的,還有另一個方法,可以應用的物件會更廣一點:

getElementsByTagName

<div id=radiodiv language=javascript >

<INPUT name=radio1 value=1 type="radio" id=myRadio1>

<INPUT name=radio1 value=0 type="radio" id=myRadio2 CHECKED >

</div>

radiodiv.getElementsByTagName_r("input").item(0).value 結果是 1

,比如我知道了一個<DIV ID='aaa'><input name=input1 value=1 type=radio ><input name=input1 value=2 type=radio>......</DIV>我要取DIV裡面的所有input,這樣寫就可以了:

aaa.getElementsByTagName_r('INPUT')

這樣就有效的可以和別的DIV(比如說有個叫bbb的DIV,裡面的也是一樣的input)相區別.

同getElementsByTagName相對應,

還有一個document.body.all.tags()

能用這個方法的物件比getElementsByTagName要小得多.但比getElementsByName要多.

到這裡我們還要提一下getElementById

它也是隻有document物件才能使用,而且返回的是陣列的第一個元素,呵呵,它的方法名都寫明瞭是getElement而不是getElements

<div id=radiodiv language=javascript >

<INPUT name=radio1 value=1 type="radio" id=myRadio1 >

<INPUT name=radio1 value=0 type="radio" id=myRadio2 value="myVal2" CHECKED >

</div>

document.getElementByIdx_x_x_x_x("myRadio2").value 結果是 myVal2  

相關文章