簡體   English   中英

為什么 Javascript 控件不會加載到托管的 web 瀏覽器中?

[英]Why won't a Javascript control load in hosted web browser?

不幸的是,我們 position 不得不在我們的 Windows 桌面應用程序中使用用於 web 頁面的 JavaScript 控件。 為此,我們在應用程序中托管了 Inte.net Explorer 並告訴它導航到本地 web 頁面。 然后我們獲取腳本引擎的 IDispatch 接口,並使用它與控件進行交互。 web 頁面看起來像這樣:

<html>
  <head>
    <script src="third party website url" type="text/javascript"></script>
  </head>
  <body onload="OurApp.OnLoad()">
  </body>
</html>

(為清楚起見,我省略了一些標簽和屬性。)我們將“OurApp”object 添加到腳本引擎的命名空間。 它是一個 IDispatch 接口,允許腳本回調到我們的應用程序中。 在我們應用程序的 OnLoad() 方法中,我們構造了由控件定義的各種 JavaScript 對象。

問題:在 99% 的情況下,這種設置效果很好。 不幸的是,在某些客戶機器上,我們的 OnLoad() 方法無法在腳本引擎中找到任何預期的方法。 就像第三方網站的JavaScript要么沒有加載要么不允許運行。 對於許多客戶,我們通過更改 Inte.net Explorer 中的安全設置解決了該問題。 但是現在我們有一些客戶的安全設置看起來是正確的,但我們仍然遇到問題。

作為一個額外的問題,如果我如上所述創建一個 web 頁面並讓客戶在他的機器上打開它,他會收到一個彈出欄,要求他授權活動內容,然后一旦他同意,一切都會正常進行。 (在此頁面中,我將 OurApp.OnLoad() 調用替換為執行相同操作的一些 JavaScript。)這與我在我的機器上獲得的行為相同,但我們的應用程序在這里運行良好。 我們在客戶的機器上根本沒有收到任何錯誤消息(盡管也許我們只是沒有在正確的地方尋找)。

所以,我很難過。 任何想法或建議將不勝感激。

更新我們終於設法解決了這個問題。 問題是我們將不受支持的語言環境傳遞給第三方網站。 在這種情況下,他們返回的是一個空腳本,而不是接近匹配或合理的默認值。

很難 100% 確定問題出在哪里,但如果我猜的話,我會說這可能與客戶 IT 部門使用某些安全策略、代理和類似性質的東西鎖定他們的機器有關。 您是否與遇到此問題的客戶 IT 部門討論過這些問題?

您是否連接到與托管 IE 控件中的 80 不同的端口上的遠程頁面? 我不太了解 IE COM,但是否有可能以編程方式獲得錯誤、警告和此類性質的東西?

您可能想要實施自己的安全管理器:

http://msdn.microsoft.com/en-us/library/ms537182(VS.85).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM