Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/KrauseFx/InAppBrowser.com

Showcasing what in-app browsers do under the hood
https://github.com/KrauseFx/InAppBrowser.com

Last synced: about 2 months ago
JSON representation

Showcasing what in-app browsers do under the hood

Awesome Lists containing this project

README

        

# [InAppBrowser.com](https://InAppBrowser.com)

## What is this project?

Please read [this article](https://krausefx.com/blog/announcing-inappbrowsercom-see-what-javascript-commands-get-executed-in-an-in-app-browser) first

## How does it work?

To my knowledge, there is no good way to monitor all JavaScript commands that get executed by the host iOS app ([would love to hear if there is a better way](https://twitter.com/KrauseFx)).

I created a new, plain HTML file, with some JS code to override some of the `document.` methods:

```javascript
document.getElementById = function(a, b) {
appendCommand('document.getElementById("' + a + '")')
return originalGetElementById.apply(this, arguments);
}
```

View the Source Code here

Check out the full announcement

## How to use

Open [InAppBrowser.com](https://InAppBrowser.com) through the iOS/Android app of your choice. For a social media app post the link, or for messengers send the link to yourself, and try opening the page as part of their in-app web browser.

## `ad-container` folder

This folder contains an empty iOS app project, that renders the [`InAppBrowser.com`](InAppBrowser.com) website.

```objective-c
[self.webView evaluateJavaScript:@"document.getElementById('usingNewMethod')"
inFrame:nil
inContentWorld:[WKContentWorld defaultClientWorld]
completionHandler:^(id _Nullable something, NSError * _Nullable error) {
NSLog(@"new: %@", something);
}];

[self.webView evaluateJavaScript:@"document.getElementById('usingOldMethod')"
copletionHandler:^(id _Nullable something, NSError * _Nullable error) {
NSLog(@"old: %@", something);
}];
```

The above code uses the new and the old method of running JavaScript code on websites. For more deatils, check out [WKContentWorld](https://developer.apple.com/documentation/webkit/wkcontentworld).

When you open the InAppBrowser.com website through that app, you can see how only the "usingOldMethod" output is shown, while the "usingNewMethod" output doesn't show up.