Hatena::Groupptech

ぷちてく RSSフィード

Archive
 
ProfileProfile

2018-04-15

Proxy/Reflectでサイト側オブジェクトの一部をパッチ・書き換え

04:24

コード書いたやつあれば良いんだけど、無いので皆さんへのラブレターポエムです。ネットワークProxyじゃなくて、jsの方。元コードを書き換えられない時のすげ替えに威力を発揮する。もちろんそうじゃない時も使える。

具体的にはサイト側スクリプト/Content Scripts のオブジェクトハックする時良さそう。ES2015 なんけどあまり知られてない気がする。

ぼくははてなjsだとはてなスターとか、いろんなサイトのオブジェクト書き換えしてるのでその辺書き換えていこうと思って、思ってるだけなので皆さんに他力本願しようと思います。

この辺。

Deprecatedな Object.observe() や、Object.prototype.watch() の後継で強力になった感じ、というとピンと来る人がいるかも。

Object.observe() 使ってキャホってたら「止めるわ」って言われてお先真っ暗でしたが、結果良かったような。ぼくが欲しかったのは単なる監視です。

次 Content Script いじる時は Proxy/Reflect 使おうと思って幾星霜。機会来ないのでハック好きな皆さんの救世主になりますよう

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect

https://qiita.com/ToshihiroGoto/items/36a4b355ba274ab25b46

# サイトのオレオレ `window.💩.pee` イジらないといけない時ありませんか。ぼくはあります

次 Content Script いじる時は Proxy/Reflect ... - Hatena::Let - のろまんば - はてなハイク

ES2015 ですがあんまり使われてるの見ない、悲しい

ES2015 ですがあんまり使われてるの見ない、悲しい - Hatena::Let - のろまんば - はてなハイク

function hook してウンコードに介入してtrapということです。今は亡き`Object.observe()`のパワフル後継

function hook してウンコードに介入してtrapということです... - Hatena::Let - のろまんば - はてなハイク

今までは関数部分だけ書き換えたい場合に、該当部分をオブジェクト単位でゴッソリコピーしてきてコメントアウトして書き換え、みたいな悲しいことやってましたが、だいぶラク出来るんじゃないの?って思ってるやつです。

あと構築がクソ遅い奴のフックにもタイマー要らなくなるんじゃないかと思ってます。

「思って」ばっかでアレですがモノがないしロクに試して無いのでこう言うしかない。書かないよりマシだろうと思って出しました。

Object.observe() 周り、双方向バインディング文脈で出てきて勝手に潰れていったって印象。「Angular vs Backbone」とか巷がワイワイしてた時、庶民は「そうじゃなくて欲しいのは単なる監視なんだよ、MutationObserverオブジェクトでもやりたいんだよバカヤロー!」と思ってた。メンテ頑張って下さい。

オマケ

なんだこれ…

http://object.watch

.watch ってあったんだ。