Do more on the web, with a fast and secure browser!

Download Opera browser with:

  • built-in ad blocker
  • battery saver
  • free VPN
Download Opera

Web Panel

  • @nekomajin

    It can be done with the webRequest API.

    I was experimenting with a similar extension, and I was able to load any site. There is an extension to bypass the x-frame. It worth to take a look at the source code.

    Actually I'm already using the code from that extension 🙂

    It's working on several sites, but not all.

  • Actually I'm already using the code from that extension
    It's working on several sites, but not all.

    Is there anything common in those sites?

  • @nekomajin

    Is there anything common in those sites?

    I don't know, I haven't analyzed this further.

  • The problem is that I can only do this from the content script
    It is really in the content script I need to find out if the frame is the iframe in the sidebar.

    I think there is a couple of tricks to get what you need (messaging from iframe?!)
    document.referrer from within iframe is one of them and probably the simplest one
    compare it to your extension panel url and set the flag in your content script for further actions

  • @vux777

    document.referrer doesn't work. Either it shows nothing, or on some sites, like instagram, it shows the url of that site...

  • ok, another solution is messaging system
    content script with all frames

    this is a content script

    window.onload = function() {
    	if (window !== {
    		var allLinks = document.links;
    		for (var i=allLinks.length-1; i>=0; i--) {
    			if (allLinks[i].href.startsWith('http://') || allLinks[i].href.startsWith('https://'))
    				allLinks[i].addEventListener('click', clickLink, false);
    function clickLink(e) {
    	chrome.runtime.sendMessage({fromCnt: 'newLink', link: this.href});

    in your panel script add:

    chrome.runtime.onMessage.addListener(function(message, sender) {
    	if (message.fromCnt && !sender.frameId) console.log(;

    and observe console log (from panel)
    you will get link clicks only from your iframe panel, and you can save those links in array to be able to go back
    you already have links that user inserted into address form

    from regular tabs, every sender object have frameId and object tab
    from sidebar frame, there is only sender ID (extension id) and URL
    ...this is for every page I tested...with iframes or without iframes

    so this could be the pattern to recognize where from message came, and ofc. to mantain the list of user navigation... simply save those urls in array and on button BACK load n-1

  • The web panel has become completely unusable sadly. It reloads not only whenever you change to another sidebar extension, but also when you hide sidebar or just web panel itself. I know it's opera's fault, but is there nothing that can be done about it?

  • @vux777:

    Sorry for the small delay, I've been inactive for a while with the development 🙂

    You solution worked great, it was this part that was really useful:

    chrome.runtime.onMessage.addListener(function(message, sender) {
      if (message.fromCnt && !sender.frameId) console.log(;

    I don't have to do all that link stuff, I just take the window.location.href, and every time the user goes to another page I will get it.

    I plan to release an update soon, where I will fix a couple of problems, add features and publish the code on github.

  • 🆙

  • Now I've worked a bit on the extension and added the following features:

    • Back and forward buttons
    • Auto refresh options by right clicking the reload button
    • Mobile user agent option, by right clicking the expand button (three dots)
    • Also a couple of bug fixes

    I plan to release it soon, but before I do that it would be great if some other user could test it. It's available on github, and if you don't know how to install it you can follow the steps there.

    Report bugs, issues and suggestions here, on the addons-page, or on github.

Log in to reply