Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/KrauseFx/InAppBrowser.com
- Owner: KrauseFx
- License: mit
- Created: 2022-06-09T14:53:42.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-08-22T07:57:56.000Z (about 2 years ago)
- Last Synced: 2024-06-03T01:36:21.721Z (4 months ago)
- Language: HTML
- Homepage: https://inappbrowser.com
- Size: 2.13 MB
- Stars: 469
- Watchers: 7
- Forks: 27
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
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.