我在没有 Visual Studio 的情况下创建 silverlight。我只有原始 html、XAML 和 js (javascript)。
我想要做的是将值从 XAML 传递到 javascript。我可以从 XAML 调用和激活 javascript 函数。见下文。 canvas 元素有一个鼠标左键弹起事件,它在 javascript 中调用 LandOnSpace。
但是我该如何调用 ShowMsg?或者更准确地说,我将如何将值传递给该调用?通常在 javascript 中你可以这样: ShowMsg(500, 700, "you owed us money");
但是当我在 xaml 代码中尝试这样做时,它破坏了一些东西。我相信它会提示 javascript 函数不存在。
<Canvas x:Name="btnLandOnSpace" Background="LightGreen" MouseLeftButtonUp="LandOnSpace"
Cursor="Hand" Canvas.Top ="0" Width="70" Height="50">
<TextBlock Text="LandOnSpace" />
</Canvas>
function LandOnSpace(sender, e) { //on server
if (!ShipAnimateActive && !blnWaitingOnServer) {
blnWaitingOnServer = true;
RunServerFunction("/sqgame/getJSLLandOnSpace");
ShowWaitingBox();
};
else {
alert('Waiting on server.');
};
}
function ShowMsg(SintCost, SintRent , SstrChoiceText) {
blnPayChoice = true;
intCost = SintCost;
intRent = SintRent;
strChoiceText = SstrChoiceText; }
最佳答案
如果您想从 Silverlight 2.0 调用 javascript 函数,您可以在 System.Windows.Browser 命名空间中使用 HtmlPage。
var param = new object[] {"some parameter"};
HtmlPage.Window.Invoke("myfunc",param);
但是,根据您上面的示例,您似乎使用的是 Silverlight 1.0,其中您的事件处理程序使用 Javascript 而不是 C# 或 VB。
您可以迁移到 Silverlight 2.0。您用于服务器页面的服务器不会阻止您使用 Silverlight 2.0(或 3.0)。 您可以在 Google App Engine 上完美运行 Silverlight 2.0 应用程序。
要在 2.0 中开始开发,请在此处下载 Silverlight 2 工具:http://www.microsoft.com/downloadS/details.aspx?familyid=C22D6A7B-546F-4407-8EF6-D60C8EE221ED&displaylang=en
有关如何在 Silverlight 托管代码和浏览器内的 Javascript 之间进行通信的一些引用,您可以查看此页面:http://msdn.microsoft.com/en-us/library/cc645076(VS.95).aspx
关于javascript - 如何调用 javascript 函数并从 XAML/Silverlight 传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012498/