|
|
| (One intermediate revision by the same user not shown) |
| Line 1: |
Line 1: |
| ==Features== | | ==Features== |
| ===Awesomium API=== | | ===CEF=== |
| ====How to test====
| | *[[CEF_Tutorial]] |
| Install the following installer ('''run it as admin manually!'''): http://jusonex.net/public/mta/awesomium/full-r6798.exe
| | *[[Client_Scripting_Functions#Browser_functions]] |
| | | *[[Client_Scripting_Events#Browser_events]] |
| If it doesn't work, you'll have to install the x86 VC++ Redist 2013 (http://www.microsoft.com/en-us/download/details.aspx?id=40784).
| | *[[CWebBrowser]] |
| | |
| ====How you can help====
| |
| The Awesomium branch needs a lot of testing before it can be merged into the trunk. This is the perfect way to help.
| |
| Especially the URL and javascript filter must work perfectly, so that you are not able to:
| |
| * read any file outside the MTA resorce directory | |
| * load a website that is not explicitly allowed (by the whitelist or an accepted request) | |
| * execute your own javascript code in ''non-local'' mode | |
| | |
| ====Local versus non-local mode====
| |
| '''Local:'''
| |
| * you can execute your own javascript code using executeBrowserJavascript/Browser.executeJavascript
| |
| * you cannot load websites from remote servers
| |
| * local mode is recommended for HTML UIs
| |
| | |
| '''Non-local:'''
| |
| * you cannot load local websites
| |
| * remote websites are filtered
| |
| * you cannot your own execute javascript code (javascript code execution on remote websites can also be blocked in the settings)
| |
| * non-local mode is recommended (and necessary) for extern websites such as YouTube
| |
| | |
| ====Functions====
| |
| <syntaxhighlight lang="lua">
| |
| browser createBrowser(int width, int height, bool isLocal [, bool transparent = false] )
| |
| </syntaxhighlight>
| |
| *'''isLocal:''' Specifies whether to use the browser in local or global mode | |
| *'''transparent:''' Should the browser support transparency?
| |
| <syntaxhighlight lang="lua">
| |
| bool requestBrowserPages(table pages)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool loadBrowserURL(browser webBrowser, string url)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool isBrowserLoading(browser webBrowser)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| string getBrowserTitle(browser webBrowser)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| string getBrowserURL(browser webBrowser)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool injectBrowserMouseMove(browser webBrowser, int x, int y)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool injectBrowserMouseDown(browser webBrowser, string mouseButton) -- mouseButton: left/middle/right
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool injectBrowserMouseUp(browser webBrowser, string mouseButton) -- mouseButton: left/middle/right
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool injectBrowserMouseWheel(browser webBrowser, int scrollVertical, int scrolLHorizontal)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool setBrowserRenderingPaused(browser webBrowser, bool isPaused)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool executeBrowserJavascript(brower webBrowser, string jsCode) -- works only in local mode
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool setBrowserVolume(browser webBrowser, float volume)
| |
| bool setBrowserVolume(float volume)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool isBrowserURLBlocked(string url)
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| bool focusBrowser(browser webBrowser)
| |
| </syntaxhighlight>
| |
| | |
| ====Events====
| |
| <syntaxhighlight lang="lua">
| |
| onClientBrowserRequestChange
| |
| Parameters: table allowedRequests
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| onClientBrowserCursorChange
| |
| Parameters: int cursor
| |
| Source: The webbrowser element
| |
| </syntaxhighlight>
| |
| ''Cursor IDs:''
| |
| <syntaxhighlight lang="lua">
| |
| Todo
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| onClientBrowserPopup
| |
| Parameters: string targetURL, string openerURL, bool isPopup
| |
| Source: The webbrowser element
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| onClientBrowserNavigate
| |
| Parameters: string targetURL, bool isMainFrame
| |
| Source: The webbrowser element
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| onClientBrowserLoadingFailed
| |
| Parameters: string url, int errorCode, string errorDescription
| |
| Source: The webbrowser element
| |
| </syntaxhighlight>
| |
| <syntaxhighlight lang="lua">
| |
| onClientBrowserDocumentReady
| |
| Parameters: string url
| |
| Source: The webbrowser element
| |
| </syntaxhighlight>
| |
| | |
| ====Javascript API====
| |
| Syntax:
| |
| <syntaxhighlight lang="lua">[javascript]
| |
| null mta.triggerEvent(string eventName, ...)
| |
| </syntaxhighlight>
| |
| | |
| Example:
| |
| Javascript:
| |
| <syntaxhighlight lang="lua">[javascript]
| |
| mta.triggerEvent("chatOutput", "Hello world!")
| |
| </syntaxhighlight>
| |
| | |
| Lua:
| |
| <syntaxhighlight lang="lua">
| |
| addEvent("chatOutput")
| |
| addEventHandler("chatOutput", root,
| |
| function(text)
| |
| outputChatBox(text)
| |
| end
| |
| )
| |
| </syntaxhighlight>
| |
| | |
| ====Examples====
| |
| =====Example 1: A 2D browser with mouse and a simple input handler=====
| |
| <syntaxhighlight lang="lua">local webBrowser = createBrowser(1024, 768, false)
| |
| requestBrowserPages({"youtube.com"})
| |
| | |
| addCommandHandler("load",
| |
| function()
| |
| -- Load the url
| |
| loadBrowserURL(webBrowser, "http://youtube.com") -- This line is potentially needless since YouTube is whitelisted
| |
| end
| |
| )
| |
| | |
| addEventHandler("onClientRender", root,
| |
| function()
| |
| -- Draw a nice border
| |
| dxDrawRectangle(195, 95, 1024+10, 768+10, tocolor(255, 255, 0))
| |
|
| |
| -- Draw the browser
| |
| dxDrawImage(200, 100, 1024, 768, webBrowser)
| |
| end
| |
| )
| |
| | |
| addEventHandler("onClientCursorMove", root,
| |
| function(relativeX, relativeY, absoluteX, absoluteY)
| |
| injectBrowserMouseMove(webBrowser, absoluteX - 200, absoluteY - 100)
| |
| end
| |
| )
| |
| | |
| addEventHandler("onClientClick", root,
| |
| function(button, state)
| |
| if state == "down" then
| |
| injectBrowserMouseDown(webBrowser, button)
| |
| else
| |
| injectBrowserMouseUp(webBrowser, button)
| |
| end
| |
| end
| |
| )
| |
| | |
| addEventHandler("onClientKey", root,
| |
| function(button, pressKey)
| |
| if pressKey then
| |
| injectBrowserKeyDown(webBrowser, button)
| |
| else
| |
| injectBrowserKeyUp(webBrowser, button)
| |
| end
| |
|
| |
| if button == "mouse_wheel_down" then
| |
| injectBrowserMouseWheel(webBrowser, -40, 0)
| |
| elseif button == "mouse_wheel_up" then
| |
| injectBrowserMouseWheel(webBrowser, 40, 0)
| |
| end
| |
| end
| |
| )
| |
| | |
| addEventHandler("onClientCharacter", root,
| |
| function(c)
| |
| injectBrowserCharacter(webBrowser, c)
| |
| end
| |
| )
| |
| | |
| showCursor(true)</syntaxhighlight>
| |
| | |
| =====A 3D browser at the car cinema in Fort Carson (Demo: https://www.youtube.com/watch?v=9w2qU6mZDh8)=====
| |
| <syntaxhighlight lang="lua">
| |
| local width, height = 1600, 900
| |
| | |
| -- Create the browser
| |
| local webBrowser = createBrowser(width, height, false)
| |
| | |
| -- Request the pages
| |
| requestBrowserPages({"www.youtube.com", "nyan.cat"})
| |
| | |
| addEventHandler("onClientRender", root,
| |
| function()
| |
| -- Update pixel data
| |
| updateBrowser(webBrowser)
| |
|
| |
| -- Draw the line
| |
| local x, y = 110.7, 1024.15
| |
| dxDrawMaterialLine3D(x, y, 23.25, x, y, 14.75, webBrowser, 18.2, tocolor(255, 255, 255, 255), x, y+1, 19)
| |
| end
| |
| )
| |
| | |
| addCommandHandler("youtube",
| |
| function()
| |
| outputChatBox("YouTube?")
| |
| loadBrowserURL(webBrowser, "http://www.youtube.com/watch?v=kdemFfbS5H0")
| |
| end
| |
| )
| |
| | |
| addCommandHandler("nyan",
| |
| function()
| |
| outputChatBox("Nyan!")
| |
| loadBrowserURL(webBrowser, "http://nyan.cat")
| |
| end
| |
| )
| |
| </syntaxhighlight>
| |
|
| |
|
| ==Notes== | | ==Notes== |