Using iframe message passing. Your page can recieve "glif ran" events from our embeddable player.
Here is the demo: https://glif.app/embed-test.html
way you can receive results from the embed player. For security reasons, you can only listen to the demo and can't send to it. If you want to run glifs, register a key and run glifs via API . Additionally, check out Val.town + Web Fetcher Block for writing more advanced examples.
Simple example
You can copy a glif embed code from the glif page in the "share" menu top right. Here is a detailed tutorial on how to do that, with screenshots
Here's a working webpage that runsone of my personal favorite glifs, Farthest Sider Cartoon Generator by @Carlos .
Copy < div id = "glif_1718829227200" >
< iframe
id = "glifIframe"
src = "https://glif.app/@Carlos/glifs/clllbhk40000rmj0f7rk3qzfp/embed?mode=last_10_runs&ar=landscape"
style = "width: 100%; height: 100%; border: 0"
frameborder = "0"
allowfullscreen
></ iframe >
</ div >
< style >
#glif_1718829227200 {
position : relative ;
width : 100 % ;
aspect-ratio : 16 / 9 ;
overflow : hidden ;
}
</ style >
Here is the core iframe communication part. Your page recieves events from the glif iframe using postMessage
API
Copy <! doctype html >
< script >
window .addEventListener ( "message" , handleMessage , false );
function handleMessage (event) {
const allowedDomains = [ "https://glif.app" ];
if ( ! allowedDomains .includes ( event .origin)) {
console .warn ( "ignoring message from untrusted origin" );
return ;
}
const message = event .data;
if ( message .type === "glifRunStarted" ) {
handleRunStarted (message);
} else if ( message .type === "glifRunCompleted" ) {
handleRunCompleted (message);
}
}
</ script >
A more complex example is Glif Iframe Embed Demo app
Here is a simpler webpage:
Copy <! DOCTYPE html >
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title >Simple Glif Embed Example</ title >
< style >
body {
font-family : Arial , sans-serif ;
max-width : 800 px ;
margin : 0 auto ;
padding : 20 px ;
}
h1 {
text-align : center ;
}
#glifUrl {
width : 70 % ;
padding : 10 px ;
margin-right : 10 px ;
}
button {
padding : 10 px 20 px ;
background-color : #007bff ;
color : white ;
border : none ;
cursor : pointer ;
}
#output {
margin-top : 20 px ;
}
#outputImage {
max-width : 100 % ;
margin-top : 10 px ;
}
#outputUrl {
width : 100 % ;
height : 50 px ;
margin-top : 10 px ;
}
</ style >
</ head >
< body >
< h1 >Glif Embed Demo</ h1 >
< div >
< input type = "text" id = "glifUrl" placeholder = "Enter Glif URL" >
< button onclick = " loadGlif ()" >Run Glif</ button >
</ div >
< div id = "output" >
< img id = "outputImage" style = "display: none;" >
< textarea id = "outputUrl" readonly ></ textarea >
</ div >
< script >
function loadGlif () {
const glifUrl = document .getElementById ( 'glifUrl' ).value;
const iframe = document .createElement ( 'iframe' );
iframe . style .display = 'none' ;
iframe .src = glifUrl + '/embed?mode=last_10_runs&ar=landscape' ;
document . body .appendChild (iframe);
window .addEventListener ( 'message' , handleMessage);
}
function handleMessage (event) {
if ( event .origin !== 'https://glif.app' ) return ;
const message = event .data;
if ( message .type === 'glifRunCompleted' && message . outputFull ?.type === 'IMAGE' ) {
const imageUrl = message . outputFull .value;
document .getElementById ( 'outputImage' ).src = imageUrl;
document .getElementById ( 'outputImage' ). style .display = 'block' ;
document .getElementById ( 'outputUrl' ).value = imageUrl;
}
}
</ script >
</ body >
</ html >
If you need help us please contact us in #api-support in our Discord server. []
Last updated 4 months ago