{"action":"created","issue":{"url":"https://api.github.com/repos/bemson/subetha-bridge/issues/1","labels_url":"https://api.github.com/repos/bemson/subetha-bridge/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/bemson/subetha-bridge/issues/1/comments","events_url":"https://api.github.com/repos/bemson/subetha-bridge/issues/1/events","html_url":"https://github.com/bemson/subetha-bridge/issues/1","id":52545537,"number":1,"title":"Supporting IE","user":{"login":"bemson","id":352402,"avatar_url":"https://avatars.githubusercontent.com/u/352402?v=3","gravatar_id":"","url":"https://api.github.com/users/bemson","html_url":"https://github.com/bemson","followers_url":"https://api.github.com/users/bemson/followers","following_url":"https://api.github.com/users/bemson/following{/other_user}","gists_url":"https://api.github.com/users/bemson/gists{/gist_id}","starred_url":"https://api.github.com/users/bemson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bemson/subscriptions","organizations_url":"https://api.github.com/users/bemson/orgs","repos_url":"https://api.github.com/users/bemson/repos","events_url":"https://api.github.com/users/bemson/events{/privacy}","received_events_url":"https://api.github.com/users/bemson/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/bemson/subetha-bridge/labels/help%20wanted","name":"help wanted","color":"159818"}],"state":"open","locked":false,"assignee":{"login":"bemson","id":352402,"avatar_url":"https://avatars.githubusercontent.com/u/352402?v=3","gravatar_id":"","url":"https://api.github.com/users/bemson","html_url":"https://github.com/bemson","followers_url":"https://api.github.com/users/bemson/followers","following_url":"https://api.github.com/users/bemson/following{/other_user}","gists_url":"https://api.github.com/users/bemson/gists{/gist_id}","starred_url":"https://api.github.com/users/bemson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bemson/subscriptions","organizations_url":"https://api.github.com/users/bemson/orgs","repos_url":"https://api.github.com/users/bemson/repos","events_url":"https://api.github.com/users/bemson/events{/privacy}","received_events_url":"https://api.github.com/users/bemson/received_events","type":"User","site_admin":false},"milestone":null,"comments":56,"created_at":"2014-12-20T01:01:34Z","updated_at":"2015-12-18T09:14:13Z","closed_at":null,"body":"After a slow bout of not-well documented testing, I've answered the following questions involving iframes, different domains, and localStorage. The questions address functionality that a browser platform *must* provide, in order to support these SubEtha features:\r\n\r\n  1. Observe localStorage data & changes.\r\n    * Storage events are the _message bus_, upon which SubEtha stakes it's claim.\r\n  2. Observe iframe unloading.\r\n    * Unloading is key to the SubEtha bridge, since it must update the client map (a localStorage key) and notify the network of any departing peers.\r\n\r\n#### Can the iframe access data in same origin?\r\n\r\n  * Safari - no :x:\r\n  * Opera - yes :heavy_check_mark: \r\n  * Chrome - yes :heavy_check_mark: \r\n  * Firefox - yes :heavy_check_mark:\r\n  * IE 8 - yes :heavy_check_mark:\r\n  * IE 9 - yes :heavy_check_mark:\r\n  * IE 10 - yes :heavy_check_mark:\r\n  * IE 11 - yes :heavy_check_mark:\r\n\r\nSafari turned out to be the odd-browser out. Safari's default settings produce a kind of sandboxed storage that isolates iframed pages, even when pointing to the same origin. This behavior is due to user settings, and has no apparent workaround.\r\n\r\n#### Can the iframe receive storage events?\r\n\r\n  * Safari - no :x:\r\n  * Opera - yes :heavy_check_mark: \r\n  * Chrome - yes :heavy_check_mark: \r\n  * Firefox - yes :heavy_check_mark:\r\n  * IE 8 - yes :heavy_check_mark:\r\n  * IE 9 - yes :heavy_check_mark:\r\n  * IE 10 - yes :heavy_check_mark:\r\n  * IE 11 - no :x:\r\n\r\nSafari results are again blamed on the default user setting. All versions of IE require a workaround.\r\n\r\n[IE 8-10 provide empty storage events](http://webreflection.blogspot.com/2009/08/w3-html5-storage-what-works-what-does.html) with zero relevant details. However, their occurrence is enough to manually track of changes, vs. receiving them in the event.\r\n\r\n[IE 11 does not provide storage events](https://connect.microsoft.com/IE/feedback/details/811546/ie11-localstorage-events-fire-twice-or-not-at-all-in-iframes) to different domain iframes. Any solution will require polling.\r\n\r\n#### Does the iframe receive an unload event when the parent navigates?\r\n\r\n  * Safari - yes :heavy_check_mark: \r\n  * Opera - yes :heavy_check_mark: \r\n  * Chrome - yes :heavy_check_mark: \r\n  * Firefox - yes :heavy_check_mark:\r\n  * IE 8 - yes :heavy_check_mark: \r\n  * IE 9 - yes :heavy_check_mark: \r\n  * IE 10 - yes :heavy_check_mark: \r\n  * IE 11 - yes :heavy_check_mark: \r\n\r\nMercifully, all browsers trigger the unload event when the parent page navigates.\r\n\r\n#### Does the iframe receive an unload event when the node is removed from the parent DOM?\r\n\r\n  * Safari - yes :heavy_check_mark: \r\n  * Opera - yes :heavy_check_mark: \r\n  * Chrome - yes :heavy_check_mark: \r\n  * Firefox - yes :heavy_check_mark:\r\n  * IE 8 - no :x:\r\n  * IE 9 - yes :heavy_check_mark: \r\n  * IE 10 - yes :heavy_check_mark: \r\n  * IE 11 - yes :heavy_check_mark: \r\n\r\nIE 8 simply does not provide this event, when the parent DOM removes the bridge's iframe. Having the parent monitor the DOM is not a solution, since it is the bridge (i.e., iframed document) that must observe the unload event, in order to perform it's clean up routine. This finding effectively eliminates IE 8 as a SubEtha compatible browser.\r\n\r\n## Next steps?\r\n\r\nGiven my tests, it's clear that Safari and IE 8 can not support SubEtha. As well, workarounds must be coded for IE support. This bug will track progress in developing the IE workarounds."},"comment":{"url":"https://api.github.com/repos/bemson/subetha-bridge/issues/comments/165720054","html_url":"https://github.com/bemson/subetha-bridge/issues/1#issuecomment-165720054","issue_url":"https://api.github.com/repos/bemson/subetha-bridge/issues/1","id":165720054,"user":{"login":"bemson","id":352402,"avatar_url":"https://avatars.githubusercontent.com/u/352402?v=3","gravatar_id":"","url":"https://api.github.com/users/bemson","html_url":"https://github.com/bemson","followers_url":"https://api.github.com/users/bemson/followers","following_url":"https://api.github.com/users/bemson/following{/other_user}","gists_url":"https://api.github.com/users/bemson/gists{/gist_id}","starred_url":"https://api.github.com/users/bemson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bemson/subscriptions","organizations_url":"https://api.github.com/users/bemson/orgs","repos_url":"https://api.github.com/users/bemson/repos","events_url":"https://api.github.com/users/bemson/events{/privacy}","received_events_url":"https://api.github.com/users/bemson/received_events","type":"User","site_admin":false},"created_at":"2015-12-18T09:14:13Z","updated_at":"2015-12-18T09:14:13Z","body":"Finally filed an issue with Microsoft, regarding [dropped localStorage writes (#2141793)](https://connect.microsoft.com/IE/feedback/details/2141793/unique-localstorage-items-dropped-between-windows). I'm sure there is something else here that I'll file yet another ticket about..."}}