限制为 HtmlPage.Window.Eval()

Limit to HtmlPage.Window.Eval()

我想知道 HtmlPage.Window.Eval() 是否有限制。

我目前正在定义一个 url 来创建一个 mailto link,内容由 silverlight 应用程序自动生成,然后传递给用户。但是,当我调用 HtmlPage.Window.Eval("location.href='mailto:?Subject=my%20Application%20-%20Spot%2FOutright%20deal&body=Please%20find%20attached%20the%20following%20trade%20details...';");

电子邮件相当大,但低于 mailto uri 的限制。我想知道 Eval 方法的大小是否有限制,这可能会导致我出现问题,如果我通过减少的消息,我不会遇到任何问题。

有没有其他方法可以做到这一点?我试过 HtmlPage.Window.Navigate,但是这总是会打开一个新的 window,即使我指定使用 self。

您想确保对文本进行编码,我使用:

string email = "mailto:" + "?subject=" + HttpUtility.HtmlEncode(subject) + "&body=" + HttpUtility.HtmlEncode(body);
HtmlPage.Window.Navigate(new Uri(email));

我认为 url 的字符数限制是 2048。

谢谢罗布,

我已经 运行 我的 url 在将它发送到函数之前通过编码。从我读到的内容来看,当在 InternetExplorer 中使用时,mailto link 似乎难以处理超过大约 512 个字符的字符集。虽然可以通过设置扩展它,但我目前无权执行此操作。

我最终使用了以下脚本:

HtmlPage.Window.Eval("OpenEmailLink(" + uri + ")");

function OpenEmailLink(uri) {

        var win = window.open(uri, '_blank', 'scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000');
        if (win && win.open && !win.closed) win.close();
    }

win 对象为 null 时存在一些问题(这是由于应用程序将其视为跨域项目,因此没有返回一个对象让我关闭。因此我不得不使用弹出窗口要启动电子邮件客户端,它与我所希望的解决方案相去甚远,但限制意味着我不得不暂时这样做。