OnClientBrowserResourceBlocked: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
Dutchman101 (talk | contribs)  (Additional example)  | 
				No edit summary  | 
				||
| (One intermediate revision by one other user not shown) | |||
| Line 20: | Line 20: | ||
==Example==  | ==Example==  | ||
This example   | This example demonstrates how to open a browser window, load a test URL, and handle the onClientBrowserResourceBlocked event. If a resource is blocked, it outputs the details to chat and, if the reason is 0 (not allowed yet), requests the domain and reloads the page if accepted.  | ||
<syntaxhighlight lang="lua">  | <syntaxhighlight lang="lua">  | ||
local   | local screenWidth, screenHeight = guiGetScreenSize( )  | ||
addEventHandler("onClientBrowserCreated", theBrowser, function()  | local browser, theBrowser  | ||
local lastBrowser = nil  | |||
end)  | local testCases = {  | ||
    {name = "Google (HTTPS, should work)", url = "https://www.google.com/"},  | |||
    {name = "YouTube (HTTPS, should work)", url = "https://www.youtube.com/"},  | |||
    {name = "MTA Wiki (HTTPS, should work)", url = "https://wiki.multitheftauto.com/"}  | |||
}  | |||
addCommandHandler("openbrowser", function(_, case)  | |||
    if isElement(browser) then destroyElement(browser) end  | |||
    local sx, sy = guiGetScreenSize()  | |||
    local bw, bh = math.floor(sx * 0.6), math.floor(sy * 0.6)  | |||
    local bx, by = math.floor((sx - bw) / 2), math.floor((sy - bh) / 2)  | |||
    browser = guiCreateBrowser(bx, by, bw, bh, false, false, false)  | |||
    guiSetVisible(browser, true)  | |||
    guiBringToFront(browser)  | |||
    showCursor(true)  | |||
    theBrowser = guiGetBrowser(browser)  | |||
    local idx = tonumber(case) or 1  | |||
    if not testCases[idx] then idx = 1 end  | |||
    local test = testCases[idx]  | |||
    outputChatBox("[BrowserTest] Loading test case: "..test.name)  | |||
    addEventHandler("onClientBrowserCreated", theBrowser, function()  | |||
        loadBrowserURL(source, test.url)  | |||
    end)  | |||
    addEventHandler("onClientBrowserDocumentReady", theBrowser, function(url)  | |||
        outputChatBox("[BrowserTest] Browser loaded: " .. tostring(url))  | |||
    end)  | |||
    addEventHandler("onClientBrowserResourceBlocked", theBrowser, function(url, domain, reason)  | |||
addEventHandler("onClientBrowserResourceBlocked", theBrowser, function(url, domain, reason)  |         outputChatBox("[BrowserTest] Resource blocked! URL="..tostring(url).." DOMAIN="..tostring(domain).." REASON="..tostring(reason), 255, 0, 0)  | ||
        if (reason == 0) then  | |||
            lastBrowser = source  | |||
            requestBrowserDomains({domain}, false, function(accepted, newDomains)  | |||
                if (accepted == true) then  | |||
                    outputChatBox("[BrowserTest] Domain accepted, reloading page.")  | |||
                    reloadBrowserPage(lastBrowser)  | |||
                else  | |||
                    outputChatBox("[BrowserTest] Domain NOT accepted.")  | |||
                end  | |||
                lastBrowser = nil  | |||
            end)  | |||
        elseif (reason == 1) then  | |||
            outputChatBox("[BrowserTest] Domain is blacklisted.")  | |||
        elseif (reason == 2) then  | |||
            outputChatBox("[BrowserTest] Blocked protocol scheme.")  | |||
        end  | |||
     end)  |      end)  | ||
end)  | end)  | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
[[pl:onClientBrowserResourceBlocked]]  | [[pl:onClientBrowserResourceBlocked]]  | ||
Latest revision as of 12:13, 15 July 2025
This event is executed when a resource (images, sounds etc.) has been blocked.
Parameters
string url, string domain, int reason
- url: the blocked URL.
 - domain: the blocked domain (part of the URL).
 - reason: the reason why the resource was blocked. Possibles values:
- 0: not allowed yet
 - 1: blacklisted
 - 2: blocked protocol scheme
 
 
Source
The browser element.
Example
This example demonstrates how to open a browser window, load a test URL, and handle the onClientBrowserResourceBlocked event. If a resource is blocked, it outputs the details to chat and, if the reason is 0 (not allowed yet), requests the domain and reloads the page if accepted.
local screenWidth, screenHeight = guiGetScreenSize( )
local browser, theBrowser
local lastBrowser = nil
local testCases = {
    {name = "Google (HTTPS, should work)", url = "https://www.google.com/"},
    {name = "YouTube (HTTPS, should work)", url = "https://www.youtube.com/"},
    {name = "MTA Wiki (HTTPS, should work)", url = "https://wiki.multitheftauto.com/"}
}
addCommandHandler("openbrowser", function(_, case)
    if isElement(browser) then destroyElement(browser) end
    local sx, sy = guiGetScreenSize()
    local bw, bh = math.floor(sx * 0.6), math.floor(sy * 0.6)
    local bx, by = math.floor((sx - bw) / 2), math.floor((sy - bh) / 2)
    browser = guiCreateBrowser(bx, by, bw, bh, false, false, false)
    guiSetVisible(browser, true)
    guiBringToFront(browser)
    showCursor(true)
    theBrowser = guiGetBrowser(browser)
    local idx = tonumber(case) or 1
    if not testCases[idx] then idx = 1 end
    local test = testCases[idx]
    outputChatBox("[BrowserTest] Loading test case: "..test.name)
    addEventHandler("onClientBrowserCreated", theBrowser, function()
        loadBrowserURL(source, test.url)
    end)
    addEventHandler("onClientBrowserDocumentReady", theBrowser, function(url)
        outputChatBox("[BrowserTest] Browser loaded: " .. tostring(url))
    end)
    addEventHandler("onClientBrowserResourceBlocked", theBrowser, function(url, domain, reason)
        outputChatBox("[BrowserTest] Resource blocked! URL="..tostring(url).." DOMAIN="..tostring(domain).." REASON="..tostring(reason), 255, 0, 0)
        if (reason == 0) then
            lastBrowser = source
            requestBrowserDomains({domain}, false, function(accepted, newDomains)
                if (accepted == true) then
                    outputChatBox("[BrowserTest] Domain accepted, reloading page.")
                    reloadBrowserPage(lastBrowser)
                else
                    outputChatBox("[BrowserTest] Domain NOT accepted.")
                end
                lastBrowser = nil
            end)
        elseif (reason == 1) then
            outputChatBox("[BrowserTest] Domain is blacklisted.")
        elseif (reason == 2) then
            outputChatBox("[BrowserTest] Blocked protocol scheme.")
        end
    end)
end)
See Also
- onClientBrowserCreated
 - onClientBrowserCursorChange
 - onClientBrowserDocumentReady
 - onClientBrowserInputFocusChanged
 - onClientBrowserLoadingFailed
 - onClientBrowserLoadingStart
 - onClientBrowserNavigate
 - onClientBrowserPopup
 - onClientBrowserResourceBlocked
 - onClientBrowserTooltip
 - onClientBrowserWhitelistChange