1

我在 windows phone 8 中的 WebBrowser 控件遇到了一个不错的问题。我已经注册了一个自定义 uriparser,它允许通过它发送命令,window.location.href = "myprotocoll://processCommand(17, 'jscriptcallback', '{\"data0\":\"hello\"}')"但是它工作得很好,除非我开始添加双引号,就像在我的示例中一样。({"data0":"hello"})如果我想发送一个 json 字符串,什么是必要的。如果您尝试通过 window.location.href 导航到该 url,则在我的应用程序中没有错误输出没有异常,什么都不会发生。我认为这是一种非常奇怪的行为。

我的 UriParser:

public class MyUriParser : UriParser
{
    public MyUriParser()
    {

    }

    protected override string GetComponents(Uri uri, UriComponents components, UriFormat format)
    {
        return "";
    }
    protected override bool IsWellFormedOriginalString(Uri uri)
    {
        return true;
    }
    protected override void InitializeAndValidate(Uri uri, out UriFormatException parsingError)
    {
        parsingError = null;
    }
    protected override bool IsBaseOf(Uri baseUri, Uri relativeUri)
    {
        return false;
    }
    protected override string Resolve(Uri baseUri, Uri relativeUri, out UriFormatException parsingError)
    {
        parsingError = null;
        return "";
    }
}

通过以下方式注册:

if (!UriParser.IsKnownScheme(SCHEMENAME_0))
    UriParser.Register(new MyUriParser(), SCHEMENAME_0, 80);
4

1 回答 1

1

您的引号可能会终止字符串,从而导致奇怪的行为。使用要保留在字符串中的引号时,请在引号前使用“\”,这样它们就不会结束字符串。在您的情况下,您需要执行以下操作:

window.location.href = "myprotocoll://processCommand(17, 'jscriptcallback', '{\"data0\":\"hello\"}')"

于 2013-09-04T15:41:29.373 回答