Corona Labs - 在设备的浏览器中打开newWebView的链接

时间:2017-03-31 20:47:28

标签: corona

我已经用HTML编写了我的Corona应用程序的一些内容,并使用native.newWebview在我的应用程序中显示它。在此HTML内容中,我有指向外部网页的链接,例如https://google.com

当用户点击我的应用中的链接时,我希望我的HTML内容保留在应用中,并且Google可以在设备的网络浏览器中打开。

但是,当他们点击我的应用中的链接时,Google会在我的应用和网络浏览器中打开。

作为一个注释,在iOS中,似乎第一次点击链接,它只在设备的默认浏览器而不是应用程序中打开,但如果您返回应用程序并再次单击该链接,它将打开在应用程序和浏览器中。对于Android,它总是在应用程序和浏览器中打开。

这是我的代码的简化版本。

main.lua

local function webListener( event )
    if event.url then
        system.openURL(event.url)
    end
end

htmlContent = native.newWebView( display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight )
htmlContent:request( "links.html", system.ResourceDirectory )
htmlContent:addEventListener( "urlRequest", webListener )

这是带有应用程序中显示的链接的html内容。

links.html

<html>
<head>
</head>
<body>
    Go to <a href="https://google.com/">Google</a>.
</body>
</html>

1 个答案:

答案 0 :(得分:1)

尝试(测试)

links.html

<html>
  <head></head>
  <body>
    Go to <a href="#corona://https://google.com/>Google</a>.
  </body>
</html>

main.lua

local function webListener( event )
    if event.url then
        local pattern = 'corona://'
        local position = string.find( event.url, pattern ) or 0
        local len = position == 0 and 0 or string.len( pattern ) 
        local url = string.sub( event.url, position + len )
        if len > 0 then -- ensures that the app doesn't try to open links.html in the default browser window
            system.openURL( url )
            --print( url )
        end
    end
end

local htmlContent = native.newWebView( display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight-2*100 )
htmlContent:request( "links.html", system.ResourceDirectory )
htmlContent:addEventListener( "urlRequest", webListener )