M Swapnil
M Swapnil

Reputation: 2381

How Automatically On "Content Blocker" Extension in Safari section?

I am creating an Ad Blocker. I am just trying to Automatically on safari extension of "Content Blocker". I went through examples but did't found any solution. Is there any way to "ON" extension or manually we have to start it?

Upvotes: 2

Views: 943

Answers (2)

breakingobstacles
breakingobstacles

Reputation: 2855

On iOS, Safari Content Blockers are disabled by default.

There is no way to automatically enable them from your app. You must instruct the user to:

  1. Open the Settings app.

  2. Go to Safari > Content Blockers.

  3. Toggle on your Content Blocker extension.

On macOS (as of 10.12), a similar rule applies: Content Blocker extensions (bundled with your app) are disabled by default, and must be toggled on by the user in Safari Preferences > Extensions.

Upvotes: 1

user257319
user257319

Reputation:

Assuming you want to test your "personal AdBlock program", first prepare a dummy HTML, with this line <div class="ads">hello</div>,

next apply your "personal AdBlock program", assuming it is JavaScript/CSS based and not proxy-like, you either hide, or remove the element (Node) from the DOM.

for example: document.querySelector('div[class*="ads"]') -- this is nice and (very) generic way to find the element.

this is how to hide "the ads" document.querySelector('div[class*="ads"]').style.display="none"; or, to make it stronger, related to other rules on the page, make it a local style + important notifier: document.querySelector('div[class*="ads"]').style.cssText="display:none !important;" ;

you can also remove the element (Node) from the DOM: var e = document.querySelector('div[class*="ads"]') follow by: e.parentNode.removeChild(e);

now, you probably want to see that "YOUR ADBLOCK" worked, later (after the page has loaded, and your javascript code runned) type: console.log(null === document.querySelector('div[class*="ads"]') ? "removed(success)" : "still here(failed)")

note that for this example (to make things simple) I assume there is only one div with that class in the page (avoiding loops :) ).

if you've just going to hide the element, you should query its current (most updated) style-condition, using a native method exist under window:

console.log("none" === window.getComputedStyle(document.querySelector('div[class*="ads"]')) ? "hidden(success)" : "still here(failed)")

Enjoy!

Upvotes: 0

Related Questions