this post was submitted on 19 Jan 2025
11 points (100.0% liked)

Firefox

18252 readers
59 users here now

A place to discuss the news and latest developments on the open-source browser Firefox

founded 5 years ago
MODERATORS
 

I tried creating a single bookmark with search word But I can't get this to work. How can I bypass security to make it work ? Do I really have to enable debug mode ? Is it possible to switch debug mode without having to restart the browser (and discard all tabs)

Here is the code I tried

javascript:(async()=>{let t="S",n="GPT Classic",u="https://chatgpt.com/g/g-YyyyMT9XH-chatgpt-classic/?q=%25s",k="cc",g=(await PlacesUtils.bookmarks.search({parentGuid:PlacesUtils.bookmarks.toolbarGuid,title:t}))[0]?.guid||(await PlacesUtils.bookmarks.insert({parentGuid:PlacesUtils.bookmarks.toolbarGuid,title:t,type:PlacesUtils.bookmarks.TYPE_FOLDER})).guid;await PlacesUtils.bookmarks.insert({parentGuid:g,title:n,url:u}),await PlacesUtils.keywords.insert({keyword:k,url:u}),alert(`Bookmark "${n}" added to folder "${t}" with keyword "${k}"!`)})();

you are viewing a single comment's thread
view the rest of the comments
[–] MrOtherGuy 1 points 6 days ago (1 children)

How exactly are you trying to run your javascript? Website javascript certainly won't be allowed to create bookmarks. If you run the function on browser side however, then it should work fine - but then I don't understand why it's wrapped into javascript url.

If it's a javascript: url because you tried to run this as bookmark itself (ie. clicking this special bookmark creates another bookmark folder and a bookmark inside it) then that's not going to work because that's pretty much just user provided code running in website context.

[–] [email protected] 2 points 6 days ago (1 children)

Hello, I tried pasting that into the URL bar But firefox autoremoves the "javascript:" in front. When I type it manually still, it does nothing.

So I pressed F12, went to console tab and pasted it there

It fails with "Uncaught (in promise) ReferenceError: PlacesUtils is not defined"

Here is a human readable version of this command

I'm just trying to create a bookmark with a script, so I can create the 40 or so special bookmarks with search keywords that I want, without wiping all the bookmarks like an import would. Also I want to just automate this for my OS re-installation.

javascript:(async () => {
    // Define variables for bookmark details
    let folderTitle = "S"; // The name of the folder where the bookmark will be stored
    let bookmarkTitle = "GPT Classic"; // The title of the bookmark
    let bookmarkURL = "https://chatgpt.com/g/g-YyyyMT9XH-chatgpt-classic/?q=%25s"; // URL of the bookmark, %25s is the URL-encoded version of %s
    let keyword = "cc"; // The keyword to access the bookmark directly from the address bar

    // Find or create the folder in the Bookmarks Toolbar
    let folderGuid = (await PlacesUtils.bookmarks.search({
        parentGuid: PlacesUtils.bookmarks.toolbarGuid, // Look in the Bookmarks Toolbar
        title: folderTitle // Look for the folder with the given title
    }))[0]?.guid; // If the folder is found, get its GUID

    if (!folderGuid) {
        // If the folder doesn't exist, create it
        folderGuid = (await PlacesUtils.bookmarks.insert({
            parentGuid: PlacesUtils.bookmarks.toolbarGuid, // Add it to the Bookmarks Toolbar
            title: folderTitle, // Use the specified folder title
            type: PlacesUtils.bookmarks.TYPE_FOLDER // Specify that it's a folder
        })).guid;
    }

    // Add the new bookmark to the folder
    await PlacesUtils.bookmarks.insert({
        parentGuid: folderGuid, // Add the bookmark inside the created folder
        title: bookmarkTitle, // Use the specified bookmark title
        url: bookmarkURL // Use the specified bookmark URL
    });

    // Add a keyword to the bookmark for quick access
    await PlacesUtils.keywords.insert({
        keyword: keyword, // The keyword that can be used in the address bar
        url: bookmarkURL // The URL associated with the keyword
    });

    // Notify the user that the bookmark and keyword were added successfully
    alert(`Bookmark "${bookmarkTitle}" added to folder "${folderTitle}" with keyword "${keyword}"!`);
})();
[–] MrOtherGuy 1 points 6 days ago

F12 opens web developer tools - the console there runs scripts in the website context - you cannot use that to access browser internals like PlacesUtils.

You need to run your script via browser console, I can't remember a hotkey for it, but you can find it from menu > more tools... > browser console

Also, I'm not sure but there's a chance that browser console is "read-only" in release firefox - meaning you might not be able to run anything from it. If that is the case, then open normal web developer tools (F12) and go to its settings, there's some checkbox there to enable "browser chrome debugging" or something like that. After checking that (and reopening browser console) you can run your function from browser console.