200 Matching Annotations
  1. Feb 2024
    1. building a robust Chrome extension that effortlessly captures full-page screenshots, providing users with a seamless and enhanced browsing experience.
    1. Open a new tab in your Chrome browser and type chrome://flags in the search field

      Access beta or secret features of Chrome browser family i.e. inc Brave

  2. Dec 2023
  3. Nov 2023
    1. <div itemscope itemtype="http://schema.org/Code"> ```js let db; const DBOpenRequest = window.indexedDB.open("toDoList", 4); DBOpenRequest.onsuccess = (event) => { db = DBOpenRequest.result; }; const transaction = db.transaction( ['toDoList'], 'readwrite', { durability: 'strict' }); ``` </div>
  4. Oct 2023
  5. Sep 2023
    1. Google claims this new API addresses FLoC’s serious privacy issues. Unfortunately, it does anything but. The Topics API only touches the smallest, most minor privacy issues in FLoC, while leaving its core intact. At issue is Google’s insistence on sharing information about people’s interests and behaviors with advertisers, trackers, and others on the Web that are hostile to privacy.
    1. If a site you visit queries the Topics API, it may learn of this interest from Chrome and decide to serve you an advert about bonds or retirement funds. It also means websites can fetch your online interests straight from your browser.

      The Topics API is worst than 3rd-parties cookies, anyone can query a user ad profile:

      ```js // document.browsingTopics() returns an array of BrowsingTopic objects. const topics = await document.browsingTopics();

      // Get data for an ad creative. const response = await fetch('https://ads.example/get-creative', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(topics) });

      // Get the JSON from the response. const creative = await response.json();

      // Display the ad. (or not) ```

  6. Aug 2023
    1. On-device ad auctions to serve remarketing and custom audiences, without cross-site third-party tracking.

      Naming a thing with a meaning opposite to what the named thing is...

      Google is insatiable when it regards to accessing users private data. Let's block that bullshit.

    1. Due to there being no good way to solve these issues, we know that many developers download Chromium (not Chrome) binaries instead, although this approach has some flaws. First, these Chromium binaries are not reliably available across all platforms. Second, they are built and published separately from the Chrome release process, making it impossible to map their versions back to real user-facing Chrome releases. Third, Chromium is different from Chrome.
  7. Jul 2023
    1. Adds "previousslide" and "nextslide" actions to the existing Media Session API.

      This will enable developers of video conferencing websites to handle these actions from browser UI. For example, if the user puts their slides presentation into a picture-in-picture window, the browser could display buttons for navigating through slides. When the user clicks those, the website handles them through the Media Session API.

    1. On any Web page run the following code

      js await startLocalServer(); let abortable = new AbortController; let {signal} = abortable; (await fetch('https://localhost:8443', { method: 'post', body: 'cat local_server_export.js', // Code executed in server, piped to browser duplex: 'half', headers: { 'Access-Control-Request-Private-Network': true }, signal })).body.pipeThrough(new TextDecoderStream()).pipeTo(new WritableStream({ write(v) { console.log(v); }, close() { console.log('close'); }, abort(reason) { console.log(reason); } })).catch(console.warn); await resetLocalServer();

  8. Jun 2023
  9. May 2023
    1. ```ts

      /* * Initiates a connection to the selected port. / async function connectToServer(): Promise<void> { hostInput.disabled = true; portInput.disabled = true; connectButton.textContent = 'Connecting...'; connectButton.disabled = true;

      try { socket = new TCPSocket(hostInput.value, parseInt(portInput.value)); connection = await socket.opened; term.writeln('<CONNECTED>'); connectButton.textContent = 'Disconnect'; connectButton.disabled = false; } catch (e) { console.error(e); term.writeln(<ERROR: ${e.message}>); markDisconnected(); return; }

      try { reader = connection?.readable.getReader(); for (;;) { const {value, done} = await reader.read(); if (value) { await new Promise<void>((resolve) => { term.write(value, resolve); }); } if (done) { break; } } reader.releaseLock(); reader = undefined; } catch (e) { console.error(e); term.writeln(<ERROR: ${e.message}>); }

      markDisconnected(); }

      /* * Closes the currently active connection. / async function disconnectFromServer(): Promise<void> { // Canceling |reader| will close the connection and cause the read loop in // connectToServer() to exit when read() returns with done set to true. if (reader) { await reader.cancel(); } } ```

  10. Apr 2023
  11. Mar 2023
  12. Feb 2023
    1. debían estarprotagonizados por extranjeros y tratar de cosas con las que no podía identificarme. Puesbien, la situación cambió cuando descubrí los libros africanos.No había muchos disponibles, y no eran tan fáciles de encontrar como los extranjeros.Pero gracias a escritores como Chinua Achebe y Camara Laye, mi percepción de laliteratura cambió. Comprendí que en la literatura también podía existir gente como yo,chicas con la piel de color chocolate cuyo pelo rizado no caía en colas de caballo.Empecé a escribir sobre asuntos que reconocía.5

      texto pdf

  13. Jan 2023
  14. Dec 2022
  15. Nov 2022
    1. Testing if Google Chrome can make annotations on this Auto Hotkey documentation page.

      It (and Brave) can't make highlights or annotations for some reason. The prompt doesn't appear when text is highlighted, why is this? Is there a way to force the prompt to appear?

  16. Oct 2022
  17. Aug 2022
    1. ```css .body, .wrapper { / Break the flow / position: absolute; top: 0px;

      / Give them all the available space / width: 100%; height: 100%;

      / Remove the margins if any / margin: 0;

      / Allow them to scroll down the document / overflow-y: hidden; } ```

    1. PWAs as URL Handlers was part of the capabilities project and support for the experimental url_handlers manifest member, documented below, is being phased out. The url_handlers manifest member is being replaced by the new handle_links manifest member, which is currently being standardized and implemented.
    1. For creating SXGs for testing purposes, you can create a self-signed certificate and enable chrome://flags/#allow-sxg-certs-without-extension to have your Chrome process the SXGs created with the certificate without the special extension.


      <link rel="prefetch" href="https://your-site.com/sample.sxg" />

      Sample ```

  18. Jul 2022
    1. Rename the downloaded file to .zip and unpack it to a directory (you might get a warning about a corrupt zip header, but most unpacker will continue anyway) Go to Settings -> Tools -> Extensions Enable developer mode Click "Load unpacked extention" Browse to the unpacked folder and install your extention
  19. Jun 2022
  20. May 2022
  21. Apr 2022
  22. Feb 2022
  23. Jan 2022
    1. How do I move my mobile bookmarks to Chrome? Open the Chrome Bookmarks manager (Ctrl+Shift+O) and you will see a new folder called ‘Mobile bookmarks’. All your bookmarks from your Android phone and/or iPhone will be sorted inside this folder.
      • FIRST: in mobile: account: sync
      • SECOND: in PC: ADD profile: same account; sync
      • THIRD: in PC: Bookmark Manager: Mobile BM
    1. It's possible, but you have to be careful. Trying to require() a package means that node will try to locate its files in your file system. A chrome extension only has access to the files you declare in the manifest, not your filesystem. To get around this, use a module bundler like Webpack, which will generate a single javascript file containing all code for all packages included through require(). You will have to generate a separate module for each component of your chrome extension (e.g. one for the background page, one for content scripts, one for the popup) and declare each generated module in your manifest. To avoid trying to setup your build system to make using require() possible, I suggest starting with a boilerplate project. You can check out my extension to see how I do it.
      • REQUIRE
    1. If you open console you'll see XMLHttpRequest cannot load file:///.../nav.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https. It's about browser politics. It works in Firefox, but not in Chrome. If you want it to work you may run a web server on your local machine to serve the files. More information: XMLHttpRequest cannot load file. Cross origin requests are only supported for HTTP "Cross origin requests are only supported for HTTP." error when loading a local file
      • LOCAL FILES from browser
    1. Try something like this (untested): var s=document.createElement('script'); s.type = "text/javascript"; s.src = "test.js"; document.body.appendChild(s); ShareShare a link to this answer Copy linkCC BY-SA 2.5 Follow Follow this answer to receive notifications answered Jul 5 '10 at 5:59 Dagg NabbitDagg Nabbit 70.9k1818 gold badges104104 silver badges139139 bronze badges 1 I modified it a bit: var s = w.document.createElement("script"); s.type = "text/javascript"; s.src = "test.js"; w.document.getElementsByTagName("HEAD")[0].appendChild(s); And it does appear to work properly in IE8 on Windows 7 (as well as other browsers). I still think IE has a bug that my original code doesn't work, but this should work as a work-around. – Jennifer Grucza Jul 6 '10 at 22:15
      • IT WORKED!
      • var w = window; var s = w.document.createElement("script"); s.type = "text/javascript"; s.src = "./file_to_include.js"; w.document.getElementsByTagName("HEAD")[0].appendChild(s);