【问题标题】:White screen is displaying while loading local HTML files in Browser Field?在浏览器字段中加载本地 HTML 文件时显示白屏?
【发布时间】:2013-02-28 09:31:28
【问题描述】:

我正在使用BrowserField 在我的应用程序中显示一些本地 HTML 文件。它正在正确显示 HTML 文件。但是在屏幕启动时,它会显示一些白屏(背景)。我怎样才能摆脱这个问题?

我正在使用以下代码:

BrowserFieldConfig _bfConfig = new BrowserFieldConfig();
_bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
_bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE );
_bfConfig.setProperty(BrowserFieldConfig.USER_AGENT, "MyApplication 1.0");

BrowserField myBrowserField = new BrowserField(_bfConfig);
add(myBrowserField);

BrowserFieldRequest request = new BrowserFieldRequest("local:///OTPhelp_en.html");
myBrowserField.requestContent(request);

【问题讨论】:

    标签: blackberry browserfield


    【解决方案1】:

    我没有一个完美的答案给你。如果您看一下at this question,到目前为止,还没有关于如何使BrowserField 背景透明的答案,这将是解决您问题的一种方法。

    根据您的OTPhelp_en.html 页面的编写方式、您对它的控制程度以及它的更改频率,这可能是一种可以接受的解决方法:

    如果您的 html 文件具有纯色背景颜色,并且您知道该颜色是什么(因为它是 您的 html 内容),那么您可以简单地设置 BrowserField 背景颜色来匹配。然后,在呈现 html 内容之前,您不会看到任何白色闪烁。像这样的:

    public class MyBrowserScreen extends MainScreen {
    
        // this assumes the html file uses a red (#ff0000) background
        private int BG_COLOR = Color.RED;
    
        public MyBrowserScreen() {
    
            // set the screen manager's background
            getMainManager().setBackground(BackgroundFactory.createSolidBackground(BG_COLOR));
    
            BrowserFieldConfig _bfConfig = new BrowserFieldConfig();
            _bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
            _bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE );
            _bfConfig.setProperty(BrowserFieldConfig.USER_AGENT, "MyApplication 1.0");
    
            BrowserField myBrowserField = new BrowserField(_bfConfig);
    
            // set the browser field background to match the HTML background, and
            //  the containing screen's background
            _myBrowserField.setBackground(getMainManager().getBackground());
            add(myBrowserField);
    
            BrowserFieldRequest request = new BrowserFieldRequest("local:///OTPhelp_en.html");
            myBrowserField.requestContent(request);
    

    当然,以这种方式对其进行硬编码意味着如果 HTML 文件更改了其背景颜色,您也需要在 Java 代码中进行更改。

    如果您想避免这种情况,并且您知道 HTML 文件将始终使用纯色背景色,您可以先将 html 文件作为资源流打开

    getClass().getResourceAsStream("/OTPhelp_en.html");
    

    然后解析它,搜索背景颜色(例如<body bgcolor=<body style="background-color:)。如果在 HTML 文件中进行了简单的背景颜色更改,这至少可以让浏览器字段看起来正确。

    如果 HTML 文件使用渐变背景或图像背景,则必须更改上述代码。但是,如果没有更多信息,这是我对解决方法的建议。

    【讨论】:

    • 但这不是一个完美的解决方案。即使对我来说,它也会让事情变得更加困难。因为将来,html 文件可能来自服务器,我正在以不同的语言显示此页面。所以这意味着我有不同语言的不同 html 文件。所以这样,事情对我来说会变得更加艰难。不过谢谢你的回答。
    • @Arindam,是的,没错。当然,服务器上的 HTML 内容是一个不同的问题。如果从服务器检索 HTML 文件,用户可能希望在呈现它时会有一点延迟。如果我试图显示 本地 内容,我通常更担心 BrowserFields 加载是否顺畅,我不希望用户认为存在网络延迟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 2018-03-06
    • 1970-01-01
    • 2012-05-11
    • 2015-12-14
    • 1970-01-01
    相关资源
    最近更新 更多