<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數(shù)據(jù)加載中……

    用script方式解決iframe中不能跨域訪問的問題

    標(biāo)題的措詞拼湊了半天,現(xiàn)在看來還是不太通順。其實(shí)就是這么一個(gè)問題,在網(wǎng)頁中iframe的頁面如果和主頁面的域名不一致的話,那么是不能互相訪問和控制的,而在實(shí)際應(yīng)用中很可能就需要實(shí)現(xiàn)跨域訪問的功能,那么我們就可以用script的方式來實(shí)現(xiàn)。

    在我們的一個(gè)項(xiàng)目中有這樣的“在線注冊”應(yīng)用:各個(gè)客戶的網(wǎng)站有一個(gè)在線注冊頁面(siteA.com/send.asp,我們稱之為A),這個(gè)頁面要求用戶填寫自己的序列號,然后提交給我們公司一個(gè)統(tǒng)一的注冊地址(siteB.com/makepsw.asp,稱之為B),在這個(gè)統(tǒng)一頁面(B)計(jì)算注冊碼,然后發(fā)回給客戶的注冊頁面,客戶取得注冊碼以后,在先前的注冊頁面(A)中再提交給自己的系統(tǒng)而完成注冊過程。

    這是A頁面的基本代碼:

    <form?name="form1"?method="post"?action="">
    <table>
    <tr>
    <td>請輸入軟件序列號:<br>
    <input?name="sn"?type="text"?class="ipt1"?id="sn"?size="26"></td>
    </tr>
    <tr>
    <td>請輸入注冊密碼:<br>
    <input?name="password"?type="text"?class="ipt1"?id="password"?size="50">
    <input?name="getpsw"?type="button"?class="bt1"?id="getpsw"?style="width:90px"?value="獲取注冊密碼"></td>
    </tr>
    <tr>
    <td>?</td>
    </tr>
    <tr>
    <td><input?name="reg"?type="button"?class="bt1"?id="reg"?value="注?冊"></td>
    </tr>
    </table>
    </form>
    注:這兒就是要實(shí)現(xiàn)當(dāng)用戶點(diǎn)擊“獲取注冊密碼”按鈕以后,注冊密碼獲取以后會自動填寫到相應(yīng)的輸入表單中。
    一開始想到了用iframe來實(shí)現(xiàn),當(dāng)B頁面獲取以后,用如parent.document.form1.password.value=?這樣的代碼來實(shí)現(xiàn)自動填寫,在本機(jī)上測試都正常了,可是傳到網(wǎng)上就出了錯:
    Error:?拒絕訪問。

    最后還是放棄iframe方式,改用script方式,效果非常好,基本上實(shí)現(xiàn)了我開始設(shè)想的功能。因?yàn)閟cript正好是允許跨域調(diào)用的,可以舉出最近的例子:一個(gè)就是PJBlog的后臺首頁一段提醒用戶該升級的代碼,另一個(gè)就是GoogleADSense代碼。

    <html>
    <head>
    <meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
    <title>系統(tǒng)在線注冊</title>
    <script?language="JavaScript"?type="text/JavaScript">
    function?getpsw_onclick(){
    ?
    var?url;
    ?
    var?o=document.getElementById("js_getpsw");
    ?
    with(document.form1){
    ??
    if(confirm('該操作要求您連接上Internet,您確定嗎?')){
    ???getpsw.value
    ="請稍候";
    ???getpsw.disabled
    =true;
    ???reg.disabled
    =true;
    ???url
    ="<a?href="http://siteB.com/makepsw.asp?sn="?target="_blank">http://siteB.com/makepsw.asp?sn=</a>"+sn.value;
    ???o.setAttribute("src",url);
    ??}

    ?}

    }

    function?reg_onclick(){
    ?
    with(document.form1){
    ??
    if(password.value==""){
    ???alert(
    "請輸入注冊碼,如果您還未獲得注冊碼,請點(diǎn)擊“獲取注冊碼”按鈕。");
    ???password.focus();
    ??}

    ??
    else
    ???submit();
    ?}

    }

    </script>
    </head>
    <body>
    <form?name="form1"?method="post"?action="myself.asp">
    <table>
    <tr>
    <td>請輸入軟件序列號:<br>
    <input?name="sn"?type="text"?class="ipt1"?id="sn"?size="30"></td>
    </tr>
    <tr>
    <td>請輸入注冊密碼:<br>
    <input?name="password"?type="text"?class="ipt1"?id="password"?size="30">
    <input?name="getpsw"?type="button"?class="bt1"?id="getpsw"?style="width:90px"?onClick="javascript:getpsw_onclick()"?value="獲取注冊密碼"></td>
    </tr>
    <tr>
    <td>?</td>
    </tr>
    <tr>
    <td><input?name="reg"?type="button"?class="bt1"?id="reg"?value="注?冊"?onClick="javascript:reg_onclick()"></td>
    </tr>
    </table>
    </form>
    注:用戶點(diǎn)擊“獲取注冊密碼”按鈕,把序列號發(fā)送到siteB.com的服務(wù)器并獲取到注冊密碼以后,點(diǎn)擊“注冊”就提交到自己的服務(wù)器中。
    <script?language="JavaScript"?type="text/javascript"?src="about:blank"?id="js_getpsw"></script>
    </body>
    </html>

    這是B頁面的代碼:

    <%@LANGUAGE="VBSCRIPT"?CODEPAGE="936"%>
    <%Option?Explicit%>
    <%
    '說明:改頁取得用戶的序列號以后,計(jì)算注冊碼,然后用動態(tài)JavaScript的寫入方式向輸入表單填充數(shù)據(jù)。

    '忽略錯誤
    On?Error?Resume?Next

    '定義變量(sn序列號,psw注冊碼)
    dim?sn,psw

    '取得查詢字符串中的序列號
    sn=Trim(Request.QueryString("sn"))

    '變換(可以和數(shù)據(jù)庫相連作復(fù)雜變幻)
    psw=StrReverse(sn)

    '輸出反饋
    if?err?then
    ????response.write?
    "alert('對不起,注冊過程中發(fā)生錯誤,請與我們聯(lián)系。\n\n電話:010-12345678');with(document.form1){getpsw.value='獲取失敗!';}"
    else
    ????response.write?
    "with(document.form1){password.value='"?&?psw?&?"';reg.disabled=false;getpsw.value='獲取成功!';}this.src='about:blank';"
    end?if
    %>

    from: http://www.ziyuehome.com/article.asp?id=89

    posted on 2006-11-21 21:41 weidagang2046 閱讀(15822) 評論(8)  編輯  收藏 所屬分類: Javascript

    評論

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    博主你真是搞笑,這叫什么iframe跨域訪問啊??

    2011-06-23 11:58 | 我暈死啊哈哈

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    代碼里沒有iframe,鑒定完畢
    2012-02-27 19:06 | iframe在哪呢

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    非常的郁悶之文章
    2012-04-06 17:31 | 林惠強(qiáng)

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    相當(dāng)郁悶
    2012-04-19 10:13 | 嗷嗷嗷

    # re: 用script方式解決iframe中不能跨域訪問的問題[未登錄]  回復(fù)  更多評論   

    唉,沒用
    2012-07-10 17:39 | X

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    標(biāo)題黨,鑒定完畢
    2012-12-05 17:30 | 我的兵營

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    太坑爹了。。。你這個(gè)需求簡單的post+js就可以解決了。
    2013-08-08 09:23 | 坑爹貨

    # re: 用script方式解決iframe中不能跨域訪問的問題  回復(fù)  更多評論   

    這是jsonp方式,不是iframe,不過文章還是不錯的~
    2013-10-15 10:38 | IT
    主站蜘蛛池模板: 男人扒开添女人下部免费视频| 亚洲综合久久综合激情久久| 亚洲精品国产美女久久久| 67pao强力打造国产免费| 一级中文字幕乱码免费| 国产成人精品亚洲日本在线| 久久精品亚洲福利| 日韩a级毛片免费观看| 日本zzzzwww大片免费| 免费国产99久久久香蕉| 一级午夜免费视频| 噜噜噜亚洲色成人网站| 国产亚洲国产bv网站在线| 亚洲毛片在线免费观看| 亚洲国产天堂在线观看| 亚洲热线99精品视频| 久久久精品国产亚洲成人满18免费网站| 中文在线免费看视频| 免费人成再在线观看网站| 亚洲国产成人久久精品软件| 亚洲视频在线观看地址| 久久亚洲AV午夜福利精品一区 | 日本一道综合久久aⅴ免费| 91久久成人免费| 国产三级在线免费| 成人毛片100免费观看| 和老外3p爽粗大免费视频| 久青草国产免费观看| 一级特黄特色的免费大片视频| 91亚洲性爱在线视频| 亚洲第一二三四区| 亚洲国产成a人v在线| 亚洲精品在线不卡| 亚洲av无码电影网| 亚洲精品日韩中文字幕久久久| 四虎永久免费影院| 亚洲电影日韩精品 | 免费在线视频一区| 免费99热在线观看| 亚洲精品第一国产综合精品99| 24小时日本韩国高清免费|