2014-04-23 118 views
0

我在我的web應用程序中使用jquery並使用iframe來顯示託管在同一websphere服務器上的應用程序。通過下面的代碼,我就能實現自動登錄到在iframe顯示Web應用程序....Jquery錯誤 - >權限被拒絕訪問屬性文件

JSP

<form:form id="posManagerLoginForm" 
    action="${posManagerUrl}" 
    target="posManagerFrame" 
    method="post" 
    class="ym-form whitenopadding"> 

<input type="hidden" name="user_name" value="myusername" /> 
    <input type="hidden" name="password" value="mypassword" /> 

</form:form> 

<div class="ym-gbox"> 
    <iframe id="posManagerFrame" name="posManagerFrame" class="posManagerFrame"></iframe>           
</div> 

JS

$().ready(function() { 
    $("#posManagerLoginForm").submit(); 
}); 

到目前爲止好,但現在我現在正在嘗試更改JS以便能夠在登錄發生後,即在表單提交後,獲取iframe中的內容。

$().ready(function() { 
    $("#posManagerLoginForm").submit(function(e){ 
     e.preventDefault();   
      this.submit();   
      var iframe = $("#posManagerFrame").contents();   
      return true; 
    }); 
    $("#posManagerLoginForm").trigger("submit"); 
}); 

正如你所看到的,我註冊了一個表單提交函數並嘗試並在加載時觸發函數。我有兩個問題....

  1. 我得到權限被拒絕試圖讓iframe的內容時訪問屬性文件錯誤。
  2. 儘管.trigger(「submit」)語句確實會導致我的函數執行,但它似乎會提交表單並觸發該函數。我試圖不提交表單直到this.submit()語句。

有沒有人知道我要去哪裏錯了?

今天早上我已經發布了幾個問題。對於那個很抱歉。謝謝你的幫助。

+0

不要以爲你可以獲得iFrmae的內容。我過去使用過window.postMessage。有一個規範。 https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage儘管你需要一個回退。 – Leeish

+0

感謝您的輸入。由於一些愚蠢的原因,我們不得不在公司支持ie6,所以我不認爲這是我的選擇。我的終極目標是能夠攔截用戶點擊iframe中的註銷按鈕的事件,因爲註銷時瀏覽器已關閉。因此,作爲替代方案,我可能會嘗試查看是否可以攔截關閉的瀏覽器事件,並以某種方式檢查請求是否來自iframe。 – Richie

+0

我只是不認爲這是可能的,如下所述Alex。這只是一個權限問題。否則,我可以在您的銀行網站上嵌入iFrame,並從該iFrame中獲取我想要的任何內容。只是不允許,除非你控制兩個頁面,我認爲只有postMessage。你可以圍繞一個方向(如果你控制兩個頁面)將內容從iframe推送到臨時文件,從父頁面輪詢查找臨時文件,然後在存在時抓取它。但不完全理想或光滑。 – Leeish

回答

2

由於跨域來源,這是禁止的。您只能從您所在的同一個域獲取iframe的內容。

+0

當你說跨域時是什麼意思?因爲我的兩個應用程序都部署在同一臺Websphere服務器上。 – Richie

+0

@Richie,通過跨域我的意思是iFrame的src和域的響應來自你的頁面。因此可以說,頁面上的響應來自本地主機。它包括一個iFrame。 iframe上的src指向facebook.com,即跨域。 –

相關問題