从 MainPage 在托管页面上调用 javascript

Posted

技术标签:

【中文标题】从 MainPage 在托管页面上调用 javascript【英文标题】:Calling javascript on hosting page from MainPage 【发布时间】:2015-01-14 09:58:34 【问题描述】:

我有一个用于 Lync 的 CWE(对话窗口扩展)。我希望在加载 CWE 时在托管页面上调用 javascript

public MainPage()        
            
 try            
 
   htmlPage.RegisterScriptableObject("MainPage", this);  
   HtmlPage.Window.Invoke("callmeonPageLoad");          
             
 catch (Exception ex)            
                 
   MessageBox.Show(ex.Message + "|" + ex.InnerException);            
             

callmeonPageLoad 看起来像这样

function callmeonPageLoad()         
            if (typeof jQuery == 'undefined') 
                alert("jQuery is not loaded")
             else 
                alert("jQuery is loaded")
            
        

如果我在 Lync 之外运行此应用程序,则会加载 jQuery。 在应用内没有。所以,我不能调用任何 jQuery 函数。仅当我希望在页面加载时调用它(从 MainPage 调用)才有效。

如果我在 Silverlight 应用程序中实现一个按钮并使其调用相同的 javascript。 jQuery 已经加载了这两种情况。

我的问题是如何在应用加载时调用包含 jquery 的 javascript。

做了更多调查,发现即使这样的页面(设置为 CWE)也不加载 jQuery

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 

</head>
<body>
    <h1>jQuery</h1>

    <div id="result"></div>

    <script type="text/javascript">
        alert(typeof jQuery);
    </script>

</body>
</html>

【问题讨论】:

【参考方案1】:

问题与 jQuery 位置和版本有关。它适用于

<script type="text/javascript" src="Scripts/jquery-1.11.2.min.js"></script>

但没有

<script type="text/javascript" src="Scripts/jquery-2.1.3.min.js"></script>

【讨论】:

以上是关于从 MainPage 在托管页面上调用 javascript的主要内容,如果未能解决你的问题,请参考以下文章

从托管在 Linux 服务器上的 Java 客户端使用 WCF

在 MainPage.xaml.cs 中使用 Android 特定代码

如何从托管 WebBrowser 控件的应用程序调用 WebBrowser 控件查看的页面中的 JavaScript 函数?

允许子 iframe 从不同域调用其父窗口上的函数

分配 App.MainPage 时 MasterDetailPage 上缺少菜单按钮

如何从托管在另一台服务器上的 Web 应用程序调用客户端计算机托管的 Wcf 服务?