Skip to content

Instantly share code, notes, and snippets.

@rossjha
Last active September 1, 2021 14:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rossjha/5b7683cee6db0d921db8fc0b9ac239df to your computer and use it in GitHub Desktop.
Save rossjha/5b7683cee6db0d921db8fc0b9ac239df to your computer and use it in GitHub Desktop.
iframe-cross-origin
import Component from '@ember/component';
export default Component.extend({
tagName: 'iframe',
attributeBindings: ['src', 'title'],
classNames: ['w-full', 'h-screen', 'border-none'],
src: '',
title: 'test',
didInsertElement() {
this._super(...arguments);
console.log('foo');
}
});
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { get } from "@ember/object"
export default Controller.extend({
windowMessage: service(),
init() {
this._super(...arguments);
get(this, 'windowMessage').on('greet', function() {
}).off('event', this, this.doSomething)
get(this, 'windowMessage').greet();
},
doSomething() {
console.log('ddd');
}
});
import Service from '@ember/service';
import Evented from '@ember/object/evented';
import { run } from '@ember/runloop';
import { isBlank } from '@ember/utils';
import { get, set } from "@ember/object"
export default Service.extend(Evented, {
window,
// Lifecycle Hooks
init() {
this._super(...arguments);
const listener = run.bind(this, 'onMessage');
get(this, 'window').addEventListener('message', set(this, 'eventListener', listener));
},
willDestroy() {
this._super(...arguments);
get(this, 'window').removeEventListener('message', get(this, 'eventListener'));
},
// Methods
isOriginAllowed() {
return true;
}
parseMessage(data) {
return JSON.parse(data);
}
onMessage(evt) {
if (!this.isOriginAllowed) {
return null;
}
const message = this.parseMessage(evt.data);
if !(isBlank(message)) {
this.trigger(`from:${message.type}`, message, event);
}
}
});
@import "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css";
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "2.18.2",
"ember-template-compiler": "2.18.2",
"ember-testing": "2.18.2"
},
"addons": {
"@glimmer/component": "1.0.0",
"ember-data": "2.18.5"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment