我們公司有一個網站 我想做個APP可以快速填寫
網頁都可以使用getelementbyid來做,如下:
document.getElementById("XXX_rmk").value = "123";
進到有框架頁的時候 也找到方法可以取,如下:
var obj = document.getElementById("iframeContainer").contentWindow;
obj.document.getElementById("XXX_rmk").value = "123";
可是當他從這個iframe再次彈跳出一個新的彈跳視窗後就無法取得了
網頁大概是這樣:
A(首頁輸入帳密)->B(主介面)->C(彈跳視窗1)->D(彈跳視窗2)
到C都可以用上面的方法取,到D就不行了,網頁有從B可以直接跳到D的,這個用上面的方法取得到,ID的部分應該是沒有搞錯
麻煩高手指點一下到底是哪裡有問題,GOOGLE了很久還是沒有頭緒,感謝指導。
只給你一個重點
請注意id是否有重覆名稱,有的話會取不到或是取成物件值。
可善用 f12 大法先查看。
第二個要注意的是,是否在同域名。
不同域名之間的框架,物件操作是禁止的。
不好意思 我看了一下不是很確定 想再問一下
網域名我想應該都是一樣的,ID我有確認過沒有重複
我在comsole那邊看了一下 他的框架名我看到有兩個,如下:
iframeContainer(XXX_detailR.aspx)
iframeContainer(XXX_sign.aspx)
實際上用這個方式都是取到detailR這個
var obj = document.getElementById("iframeContainer").contentWindow;
obj.document.getElementById("XXX_rmk").value = "123";
剛剛試一下,想說那個是不是全名,嘗試用了下面的方法還是不行
var obj = document.getElementById("iframeContainer(XXX_sign.aspx)").contentWindow;
obj.document.getElementById("XXX_rmk").value = "123";
請問一下這樣該如何解決?
把麥咖啡關了先
在F12的開發者模式下,JS裡寫console.log(obj);看看輸出部份是否為undefined
不是看McAfee給你的框架資訊啦,看起來就不太對XD...你要從開發工具的Elements找正確的框架資訊。(或是在要找的元素上按滑鼠右鍵,然後在選單中選「檢查」)在彈跳裡面開彈跳,他的框架可能是開在彈跳的框架裡,如果你的js放在最外層,那得要找到正確的框架。(看看你使用的popup)
說真的,你也沒很完整的程式碼。
光你的 iframeContainer 本身是幹了啥事也不清楚。
感覺起來你好像不是很清楚了解javascript,變數之間的運行。
本來是想要教你用function的方式來傳送你需要的變數。
一層一層丟回來。
捨棄直接用id讀取參數的方式。
不過看你f12用成這樣。我倒是有點害怕這樣教你。會不會讓你更搞不懂了。
我是用MIT App Inventor想寫個簡單的APP,很簡單就像下面這樣:
開發軟體就是有個能用webview RUN JS 的功能
之前寫像上面那樣就可以順利寫進去網頁了,下面紅色箭頭處就是想寫進去的欄位:
按照前輩們的解釋,我盡量得看了一下,實在看不出有其他的IFRAME的ID,我也確定Document的ID沒有寫錯
試了contentDocument也沒用,只有contentWindow對第一個跳出的IFrame有用,第二個跳出來的iframeContainer(XXX_sign.aspx)這個就沒用了,網頁上有另外一個功能可以先呼叫出iframeContainer(XXX_sign.aspx)這個的,指令下去就有用
但是當他第二個才出現的時候就沒用處了T.T
另外還有試了
window.frames[0].document.getElementById("txtbs_rmk").value = "abc";
window.frames[1].document.getElementById("txtbs_rmk").value = "abc";
window.frames[2].document.getElementById("txtbs_rmk").value = "abc";
想說是不是可以不要管他IFRAME的ID 依序取都寫進去(因為網頁裡面的ID不同頁面的也不會有重複),不過還是不行
可以麻煩前輩高手們可以指點一下可行性的方法嗎?
謝謝
你貼的畫面雖然隱藏了name跟id,但是底下的selector列表還在喔,反過來說,你透過他列出的selector來找看看能不能找到...反正他都幫你列出來了。
不好意思 還是不行 兩個iframe的ID一模一樣 都是會取道第一個
下面是取兩個IFRAME各一個欄位檢查的結果