fabioberger / chrome Goto Github PK
View Code? Open in Web Editor NEWGopherJS Bindings for Chrome
GopherJS Bindings for Chrome
I'm trying to do a simple "GetAllCookieStores" and I'm hitting what appears to be an infinite recursion when the cookie store is rendered into a map[string]interface{}. Was this a show-stopper for this project or were there any leads on getting it working? This is the most basic thing I could think of trying and it (along with all other get cookie calls) seem to fail miserably.
package main
import (
"github.com/fabioberger/chrome"
"honnef.co/go/js/dom"
)
func main() {
c := chrome.NewChrome()
c.Cookies.GetAllCookieStores(func(cookieStores []chrome.CookieStore) {
dom.GetWindow().Document().GetElementByID("notification").SetInnerHTML("getting stores")
})
}
I decided to try and port some of my code into an omnibox extension. And I'm getting a strange error when I try and run the search.
Sample code is at https://gist.github.com/AmandaCameron/b753e88e18d60014fda2 -- I'm not sure if it's a GopherJS bug or a problem in the bindings, but figured I'd file a bug here anyway just to make sure.
Can anyone update this?
In tabs.go
, the implementation of func (t *Tabs) Update
appears to have been copied incorrectly from "highlight"
How would you use Gopherjs to compile down more than one js file? I tried doing so and ran into the following error:
Gopherjs cannot build non-main package
For example, I need urls.js
for a content script and background.js
, so I need gopherjs to create multiple .js files.
How can this be achieved?
I get the following error in the console, referencing the compiled .js (which I will not post here because it's enormous:
Uncaught TypeError: Cannot read properties of undefined (reading 'onClicked') at Object.OnClicked (browser_action.go:82:3) at main (background.go:18:3) at $init (background.js:63510:9) at $goroutine (background.js:1690:21) at $runScheduled (background.js:1736:13) at $schedule (background.js:1760:9) at $go (background.js:1722:5) at background.js:63522:1 at background.js:63525:4
Commenting out the code that starts with, c.BrowserAction.OnClicked
allows the Extension to properly load, so it makes sense that there's something wrong with the OnClicked / maybe something GopherJS-related?
Simply commenting out the code in, "GetActiveWindowUrls" still results in the issue, to rule that out.
background.go
package main
import (
"github.com/fabioberger/chrome"
"TabUrls/helpers"
)
func main() {
helpers.GoosCheck()
var c = chrome.NewChrome()
c.BrowserAction.OnClicked(func(tab chrome.Tab) { // <-- issue here?
tabQuery := chrome.Object{
"currentWindow": true,
}
c.Tabs.Query(tabQuery, GetActiveWindowUrls)
})
}
func GetActiveWindowUrls(tabs []chrome.Tab) {
var c = chrome.NewChrome()
var urls []string
for _, value := range tabs {
urls = append(urls, value.Url)
}
c.Storage.Local.Set("tabUrls", urls)
createProps := chrome.Object{
"url": "urls.html",
}
c.Tabs.Create(createProps, func(tab chrome.Tab) {
updateProps := chrome.Object{
"active": true,
}
c.Tabs.Update(tab.Id, updateProps, func(tab chrome.Tab) {})
})
}
urls.go
package main
import (
"strings"
"github.com/fabioberger/chrome"
"honnef.co/go/js/dom"
"TabUrls/helpers"
)
var c = chrome.NewChrome()
var d = dom.GetWindow().Document()
func main() {
helpers.GoosCheck()
urls := c.Storage.Local.Get("tabUrls").Interface()
displayEl := d.GetElementByID("tabUrlsDisplay")
displayEl.SetTextContent(strings.Join(urls.([]string), "\n"))
}
helpers.go
package helpers
import (
"fmt"
"go/build"
)
func GoosCheck() {
if build.Default.GOOS == "windows" {
fmt.Print("GOOS is Windows. The GopherJS is falling back to GOOs=linux\n")
build.Default.GOOS = "linux"
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.