SlideShare a Scribd company logo
Flash and the DOM
        Why you still need to know JavaScript


            *not* AIR and AJAX !

by Mike Wilcox
mwilcox@sitepen.com
Twitter: #clubajax
http://clubajax.org
Mike




© SitePen, Inc. 2009. All Rights Reserved
© SitePen, Inc. 2009. All Rights Reserved
My Flash and JavaScript
                                 background



© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

Catch 22: FLex APps
Catch 22: FLex APpsCatch 22: FLex APps
Catch 22: FLex APps

This document discusses common issues that arise when developing flexible applications across multiple platforms, and provides recommendations for addressing them. It outlines strategies for improving load time and runtime performance, such as using a startup module, caching, and externalizing assets. It also recommends choosing a micro architecture and component-based design, as well as prioritizing features over code, to help avoid performance issues. Additionally, it suggests determining the right approach for code sharing across web, desktop and mobile before beginning development.

development pracflex 4
Develop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will loveDevelop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will love

Do you want to leverage HTML, CSS and JavaScripts APIs to deliver rich user experiences that outlive the framework du jour? Do You want to understand good front-end application architecture and performance principles. Then you want to build applications in Vanilla JS. Despite popular belief Vanilla JS is not as difficult to master and implement as you might think. In this tutorial Chris Love will demonstrate how to apply many common web performance optimization, good architecture and tricks to build a fast, native-like application user experience customers desire without dependency on large, fast food frameworks. This tutorial will demonstrate the following concepts: - Applying the 14kb Rule for Instant Loading - Markup Management - Eliminating Excess AJAX Calls - Working With and Around Application Cache - Applying Service Workers and HTTP/2 For Even Better User Experiences - Leveraging common browser APIs & good architecture

html5javascriptweb performance
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers

Slides for the session I gave at the XPages & Beer event on July 2nd, 2014. See https://github.com/markleusink/XPagesBeerAngular for the demo files.

xpages
What we will discuss
                    ActionScript & JavaScript similarities and differences
                    The embed & object code
                    ActionScript JavaScript Communication
                    Flash DOM gotchas
                    Future of Flash




© SitePen, Inc. 2009. All Rights Reserved
I don't need to know about browser issues -
        because I code in ActionScript!
                                            - Mike circa 2002




© SitePen, Inc. 2009. All Rights Reserved
Flash in the browser
                    You're still at the mercy of the container (the browser)
                    IE, Firefox, Safari (WebKit) all have different problems
                    implementing the Flash plugin
                    There may come a time when the customer wants that
                    full-page Flex app to interact with their existing HTML
                    code




© SitePen, Inc. 2009. All Rights Reserved
ActionScript & JavaScript
                                            Similarities and Differences




© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress

Taylor Lovett presented on the new JSON REST API for WordPress. The API uses JSON and REST principles to provide an intuitive and easy to use interface for WordPress content. It allows users to create, read, update and delete WordPress content like posts, pages, users and media through HTTP requests. The API is extensible and developers can build custom routes and endpoints. It provides a powerful way to interact with WordPress programmatically and will soon be integrated into the WordPress core.

wordpress pluginwordpressjson rest api
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignal

My session at ITCamp.ro 2012: Web site development is an ever changing landscape. Thanks to the latest web browser technologies it's possible to create highly responsive single page applications, requiring a new approach to design and development on the server side. During this session we'll see ho to use .Net technologies to get the best out of the new Web API, WebSockets and the excellent RSignal framework.

signalrasp.netweb api
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations

No one wants a slow loading, slow reacting application. As page weight has increased so has the dependency on JavaScript to drive rich user experiences. Today many pages load over 2MBs of JavaScript, but is this healthy? Do your scripts and dependencies perform well? In this session we will review common JavaScript performance bottlenecks, how to detect them and how to eliminate them. This session will review common bad coding syntax, architecture and how to replace them with better alternatives. You will also be exposed to caching, code organization, build and deployment best practices that produce the best user experiences. Finally, you will see how to use the navigation timing and performance timing APIs to fine tune your applications to produce a fast, lean application your customers will love.

web performancejavascript
Language Similarities
                    Both based on the ECMAScript standard
                    AS1 and JavaScript very similar
                    AS2 still similar but with classes and packages
                    AS3 actually more like Java with closures
                          AS3 based on early ECMAScript 2 which has since
                          changed

                    Key difference is Document and Stage, MovieClips and
                    DOM Nodes



© SitePen, Inc. 2009. All Rights Reserved
ActionScript & JavaScript
                    Both scripting languages
                          SWF compiler combines scripts, removes whitespace and
                          comments, mini es variables, turns it into bytecode, and
                          compresses.
                          AJAX build tools combine scripts, remove whitespace and
                          comments, minify the variables. The end result is then
                          compressed using GZIP on the server.

                    Key difference is the SWF wrapper holds all media
                    (images, sounds, etc.)



© SitePen, Inc. 2009. All Rights Reserved
SWF and HTML both stream
                    Actually both are progressive download
                    SWF compilers assemble the pieces so that elements can
                    display and run when enough data has downloaded
                    HTML page streams line by line and executes or displays




© SitePen, Inc. 2009. All Rights Reserved
Web APIs / Web Services
                    JavaScript: XHR and JSONP
                          XHR (XmlHttpRequest) has cross domain issues
                          eval sends a string to the JavaScript engine to be
                          interpreted
                                 eval(“alert(1 + 2);”); // alerts 3

                    Flash: XML & Remoting
                          XML is heavy on the wire
                          Remoting needs a server that handles it

                    crossdomain.xml - newer browsers are supporting this
© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise

10up open sourced their WordPress Best Practices (PHP, JavaScript, tools, and workflows) in late 2014. As the Director of Web Engineering at 10up, I drove this project and am the lead contributor to the docs. These Best Practices allow developers to build sites that scale, perform, and are secure one sites receiving millions of page views per day. They also standardize development practices in such a way that facilitates team collaboration. This talk will highlight some important parts of the Best Practices and reveal some valuable tips about how we (10up) engineer some of the most complex and most viewed WordPress sites in the world.

enterprisewordpressphp
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web Development

This document provides an introduction to Node.js web development. It discusses Node.js basics including its asynchronous, non-blocking architecture. It also covers building a simple web app with Express, MongoDB, and Jade. Tools for bundling assets like Grunt and unit testing with Mocha are described. Sample code demonstrates basic routing, database queries, templating, and unit tests. Contact information and GitHub repos are provided to learn more.

restfulnodejsjade
Isomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWPIsomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWP

- NodeifyWP is a framework that allows developers to build isomorphic web applications using WordPress, PHP, and Node.js. - It uses PHP to execute JavaScript (Node.js) on the server, enabling the use of modern front-end technologies like React while retaining WordPress for content management. - Setting up NodeifyWP in a theme involves requiring the framework, registering server-side and post-specific JavaScript, and rendering content through a REST API endpoint.

wordpressjavascriptisomorphic
Embedding the SWF
                In the meantime, Eolas might sue every last,
                        lousy company in creation




© SitePen, Inc. 2009. All Rights Reserved
The bare bones embed object

         <object>
            <param name=movie value="myMovie.swf">
            <embed src="myMovie.swf" />
         </object>




© SitePen, Inc. 2009. All Rights Reserved
object vs. embed
                    object for IE
                          object node has attributes
                          object has child nodes with more attributes
                    embed for everyone else
                          No child attributes
                          Can be a child of the object node




© SitePen, Inc. 2009. All Rights Reserved
A more typical embed object
         <object width="480" height="270" align="middle"
         codebase="http://download.macromedia.com/pub/shockwave/cabs/
         flash/swflash.cab#version=9,0,0,0" classid="clsid:d27cdb6e-
         ae6d-11cf-96b8-444553540000" name="my__player" id="my__player">
         
 <param value="always" name="allowScriptAccess"/>
         
 <param value="true" name="allowFullScreen"/>
         
 <param value="http://flash.local/my__player.swf?
         prefsfile=http://flash.local/xml/prefs_skunk.xml" name="movie"/>
         
 <param value="my_movie" name="name"/>
         
 <param value="my_movie" name="id"/>
         
 <param value="high" name="quality"/>
         
 <param value="#ffffff" name="bgcolor"/>
         
 <embed width="480" height="270" align="middle"
         pluginspage="http://www.macromedia.com/go/getflashplayer"
         type="application/x-shockwave-flash" allowfullscreen="true"
         allowscriptaccess="always" name="my__player" bgcolor="#ffffff"
         quality="high" src="http://flash.local/my__player.swf?
         prefsfile=http://flash.local/xml/prefs_skunk.xml"/>
         </object>


© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1

Mobile applications are evolving to leverage HTML5 and rich web technologies. While native mobile applications currently have advantages in terms of performance and access to device features, HTML5 allows building applications that work across mobile devices and platforms using web standards. Frameworks like jQuery Mobile and Sencha Touch demonstrate how to build mobile-optimized interfaces using HTML, CSS, and JavaScript. HTML5 applications have the potential for broader reach and less development effort compared to building separate native apps, though performance compromises remain versus truly native apps.

w2e
Best Friend || Worst Enemy: WordPress Multisite
Best Friend || Worst Enemy: WordPress MultisiteBest Friend || Worst Enemy: WordPress Multisite
Best Friend || Worst Enemy: WordPress Multisite

“We’ve all built a ton of WordPress sites. We’ve also managed them all too. You’ve probably heard about WordPress Multisite Networks, and all the awesome things it can (and can’t) allow you to do. With great power, comes great responsibility. During this talk, Taylor will step through the do’s and don’ts of Multisite Networks. He will share how WordPress Multisite can be your best friend or worst enemy… but usually both… at the same time.” Learning Outcomes: Expect pro-tips, eureka moments, and hard lessons learned from his experience setting up and running multisite networks for small private company intranets, all the way to global enterprise brands. By the end of this talk you will know the pros and cons of WordPress Multisite Networks, best practices for setting up and running a multisite, and know about alternatives if multisite isn’t a fit for your next project. Presented by Taylor McCaslin at WordCamp Toronto on October 3, 2015.

wpmccaslinmultisite
Advanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms toolsAdvanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms tools

All browsers have developer tools that help developers troubleshoot their applications. But each browser's tools are different and all have strengths and weaknesses. Microsoft Edge is no different.This session will highlight some deeper insights you can gain through the Edge developer tools and some advanced tools available from Microsoft. We will dive into advanced CSS and JavaScript debugging capabilities. We will also review how to chase memory leaks and diagnose common performance rendering issues. Finally we will do a quick review of Vorlon.js, a remote debugging library that enables you to troubleshoot issues on devices you do not have developer tool access.

htmljavascriptcss
Attributing Attributes - object
                    Root attributes
                          width, height, align, codebase, classid, name, id

                    Child attributes - passed to the player once it is started.
                          allowScriptAccess, allowFullScreen, movie (src), wmode,
                          swLiveConnect




© SitePen, Inc. 2009. All Rights Reserved
Attributing Attributes - embed
                    Can be a root node or child of object node
                          As a child, browser determine whther to ignore the
                          embed tags or the object tags

                    No embed child nodes
                    Root attributes
                          width, height, align, name, id, allowScriptAccess,
                          allowFullScreen, src, wmode, pluginspage, type,
                          swLiveConnect




© SitePen, Inc. 2009. All Rights Reserved
Solution: Dynamic embedding
                    With thanks to that damn Eolas
                    More control over the myriad attributes
                    Better reusability
                    Most attributes can be preset
                    Sets up ExternalInterface for you
                    Fires events for SWF readiness
                    Bonus: SEO!



© SitePen, Inc. 2009. All Rights Reserved
Dynamic embedding libraries
                    SWFObject
                    dojox.embed.Flash
                    AC_RunActiveContent.js
                    Mike’s custom code




© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPages

Extending on some of the themes of front-end heavy application development, this session covered the higher order themes of development workflow automation, revolving around the concepts of modern web app development from a full stack perspective.

mwlugdominoxpages
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NY

The document discusses optimizing web performance for mobile devices. It covers mobile web platforms and browsers, the importance of performance on mobile, tools for measuring performance, optimizing initial loading and above-the-fold content within 1 second, and maintaining responsiveness. The key recommendations are to measure on real devices, avoid redirects, reduce requests, load above-the-fold content quickly and defer the rest, and prioritize simplicity over complex designs and frameworks.

html5optimizationweb performance
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack

This document provides an overview of the MEAN stack and demonstrates how to build a sample application with it. It begins with defining each component of the MEAN stack: MongoDB as the database, Express as the web application framework, AngularJS for the frontend framework, and Node.js as the runtime environment. It then demonstrates setting up a basic Express app, integrating authentication with Passport, and interacting with MongoDB using Mongoose. The document also discusses key concepts like asynchronous I/O in Node.js and model-view-controller patterns in AngularJS. Overall, it serves as a high-level introduction to the technologies that make up the MEAN stack.

expressjsmeanangularjs
Mike’s custom code example
         <body>
         
 <div align=center>
         
 
 <script src="mike.js" id="MIKE"
         
 
 
 config="swf=my_player,width=480,height=270" >
         
 
 </script>
         
 </div>
         </body>




© SitePen, Inc. 2009. All Rights Reserved
Mike’s custom code highlights
         // find where this script is attached in the dom
         var snode;
         var scripts = document.getElementsByTagName("script");
         for (var i = 0; i < scripts.length; i++) {
         
 if (scripts[i].id && scripts[i].id == "MIKE") {
         
 
 snode = scripts[i];
         
 
 break;
         
 }
         }

         // Get the variables from the config attribute in the script
         var configStr = snode.getAttribute("config");
         var attrs = convertToAttributes(configStr);

         // The parent node of the script is where we insert the SWF
         playerdiv = snode.parentNode;
         playerdiv.style.width = flashArgs.width;
         playerdiv.style.height = flashArgs.height;



© SitePen, Inc. 2009. All Rights Reserved
Mike’s custom code the embed object
         var str = '<object id="'+args.id+'" name="'+args.id+'" '
         
 + 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
         
 + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/
         flash/swflash.cab#version=9,0,0,0" '
         
 + 'width="'+args.width+'" height="'+args.height+'">'
         
 
 + '<param name="allowScriptAccess" value="'+args.asa+'" />'
         
 
 + '<param name="allowFullScreen" value="'+args.fs+'" />'
         
 
 + '<param name="movie" value="'+args.id+'" />'
         
 
 + '<param name="name" value="'+args.src+'" />'
         
 
 + '<param name="id" value="'+args.id+'" />'
         
 
 + '<param name="wmode" value="'+args.wmode+'" />'
         
 + '<embed src="'+args.src+'" '
         
 
 + 'width="'+args.width+'" height="'+args.height+'" '
         
 
 + 'name="'+args.id+'" '
         
 
 + 'allowScriptAccess="'+args.asa+'" '
         
 
 + 'allowFullScreen="'+args.fs+'" '
         
 
 + 'wmode="'+args.wmode+'" '
         
 
 + 'type="application/x-shockwave-flash" '
         
 
 + 'pluginspage="http://www.macromedia.com/go/
         getflashplayer" />'
         + '</object>';

© SitePen, Inc. 2009. All Rights Reserved
embed and object in the same doc?
                    Most libraries do a browser sniff and only use one or the
                    other
                    In my opinion this is unnecessary because:
                          Modern browsers elegantly ignore the other tag
                          No bytes on the wire saved
                          The dynamic code base is more complex
                          The browser sniffing is what adds bytes on the wire and
                          execution time to for parsing

                          You lose the ability for the YouTube embed

© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages

This document discusses using jQuery with XPages. It begins with an introduction to jQuery, explaining that it is a popular JavaScript library that simplifies document manipulation, events, animation, and AJAX. It then compares jQuery to Dojo and provides guidance on when each should be used. The document demonstrates how jQuery works via its API and methods. It also explains how to add jQuery to an XPages application either directly in code or via a theme. Finally, it discusses jQuery plugins and how they can provide ready-made functionality to solve requirements.

xpagesjqueryjavascript
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011

This document provides an overview of techniques for developing high performance web applications. It discusses why front-end performance matters, and outlines best practices for optimizing page load times, using responsive interfaces, loading and executing JavaScript efficiently, and accessing data. The presentation recommends tools for monitoring and improving performance, such as Firebug, Page Speed, and YSlow.

codemashjavascriptperformance
나는 PM이다! 30회 진혜경 발표자료
나는 PM이다! 30회 진혜경 발표자료나는 PM이다! 30회 진혜경 발표자료
나는 PM이다! 30회 진혜경 발표자료

2016.10.25 방송자료입니다.

나는pm이다pmipdu
Getting that movie
         var swfById = function (movieName){
         
 if(document.embeds[movieName]){
         
 
 return document.embeds[movieName];
         
 }
         
 if(document[movieName]){
         
 
 return doc[movieName];
         
 }
         
 if(window[movieName]){
         
 
 return window[movieName];
         
 }
         
 if(document[movieName]){
         
 
 return document[movieName];
         
 }
         
 return null;
         }




© SitePen, Inc. 2009. All Rights Reserved
Getting ActionScript and
                            JavaScript to Talk
                                        Mommy! Daddy! Stop ghting!




© SitePen, Inc. 2009. All Rights Reserved
AS / JS Communication
                    ExternalInterface
                    FlashVars
                    GetVariable/SetVariable
                          Largely deprecated for AS3

                    Movie properties
                          Primarily PercentLoaded

                    fscommand
                          Complete with VB Script! Which thankfully died a bloody
                          death
© SitePen, Inc. 2009. All Rights Reserved
ExternalInterface
                    Introduced in Flash 8 after years of abusive punishment
                    to devs, forcing them to use the fscommand
                    And then the Flash 8 EI was coded by drunken sailors
                    Flash 9 EI much better
                    But you still have craziness like this patch:

         window.attachEvent('onunload', function() {
         
 window.__flash__removeCallback = function (instance, name) {
         
 
 try {
         
 
 
 if (instance) instance[name] = null;
         
 
 } catch ( err ) { }
         
 };
         });


© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

Restaurant Roll-up Transaction
Restaurant Roll-up TransactionRestaurant Roll-up Transaction
Restaurant Roll-up Transaction

The document describes the typical structure for expanding a restaurant through limited partnerships. It summarizes: - Restaurants are often financed through limited partnerships that raise capital from individual investors seeking annual returns and eventual profit from selling their stake. - A general partner owns 1% and manages the business, while limited partners own the remaining 99% of individual locations and receive cash flows. - As the restaurant expands, new locations are financed through debt and equity and controlled by the same general partner, who owns the trademark that locations pay fees to use. - This structure allows the general partner to control operations while owning less than 50% of each individual location.

知慧의 장 정보지_10월호
知慧의 장 정보지_10월호知慧의 장 정보지_10월호
知慧의 장 정보지_10월호
ICANN 51 로스앤젤레스 비즈니스 다이제스트
 ICANN 51 로스앤젤레스 비즈니스 다이제스트  ICANN 51 로스앤젤레스 비즈니스 다이제스트
ICANN 51 로스앤젤레스 비즈니스 다이제스트

This Digest is designed to serve as a non-exhaustive review of highlights of the Internet Corporation for Assigned Names and Numbers (ICANN) Public Meeting relevant to a variety of businesses stakeholders affected by ICANN’s work, presented in business friendly language.

icannbusiness
ExternalInterface Examples




© SitePen, Inc. 2009. All Rights Reserved
FlashVars
                    FlashVars attribute introduced in Flash 6 although the
                    query string was used before that and there’s little
                    difference
                    No complex objects without serialization - similar to
                    sephiroth library
                    Examples of the need for FlashVars:
                          Dynamic creation, as in the Dojo FileUploader
                          URLs to connect to




© SitePen, Inc. 2009. All Rights Reserved
FlashVars
         <object>
         
 <param name=movie value="myMovie.swf">
         
 <param name=FlashVars value="user=Mike&score=1000">
         
 <embed src="myMovie.swf" FlashVars="user=Mike&score=1000" />
         </object>

         or

         <object>
         
 <param name=movie value="myMovie.swf?user=Mike&score=1000">
         
 <embed src="myMovie.swf?user=Mike&score=1000" />
         </object>

         // accessed in AS2 in _root:
         _root.user

         // accessed in AS3:
         var params = LoaderInfo(this.root.loaderInfo).parameters;
         params.user;


© SitePen, Inc. 2009. All Rights Reserved
FlashVars Examples




© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

천연미장 기법 강의20150503
천연미장 기법 강의20150503천연미장 기법 강의20150503
천연미장 기법 강의20150503

흙미장, 석회미장, 석고미장, 타데락트, 일본식 미장, 석회페인팅 등 흙건축이나 생태주택 에 적용 할수 있는 미장, 페인팅 기법을 정리했다.

천연페인트흙건축생태주택
Shall we play a game?
Shall we play a game?Shall we play a game?
Shall we play a game?

How to run system administrator recruitment process? By creating platform based on open source parts in just 2 nights! I gave this talk in Poland / Kraków OWASP chapter meeting on 17th October 2013 at our local Google for Entrepreneurs site. It's focused on security and also shows how to create recruitment process in CTF / challenge way. This story covers mostly security details of this whole platform. There's great chance, that I will give another talk about this system but this time focusing on technical details. Stay tuned ;)

itowaspsecurity
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일

HTML5 provides new semantic elements that help improve accessibility and SEO. These include <header>, <nav>, <article>, <aside>, <footer>, <time>, <video>, <audio>, and more. HTML5 also introduces new features like local storage, offline caching, and geolocation that enhance the mobile web experience.

html5androidmobile
Flash/Browser Gotchas



© SitePen, Inc. 2009. All Rights Reserved
Flash/Browser Gotchas
                          Flash will not initialize in a node with display=”none”
                          DOM must be "ready" before the SWF can be inserted in
                          node - using window.onload (or something better)
                          Watch IE6 & IE7 Memory leaks - especially when using the
                          ExternalInterface
                          Detecting Mouse Events outside of SWF
                          TabIndex between a SWF and HTML is non-existent
                          You've heard those stories of bad Java applet
                          implementations? Flash isn't a whole lot better.


© SitePen, Inc. 2009. All Rights Reserved
Future of Flash
                                               FutureSplash
                                             ShockWaveFlash
                                             Macromedia Flash
                                               Adobe Flash
                                              Microsoft Flash



© SitePen, Inc. 2009. All Rights Reserved
Is Flash Dead?
        Rumors of my death have been greatly
        exaggerated.
                                    - Paul McCartney




© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

Flash Security, OWASP Chennai
Flash Security, OWASP ChennaiFlash Security, OWASP Chennai
Flash Security, OWASP Chennai

The document discusses security issues related to Flash applications. It introduces Flash and ActionScript, and outlines various vulnerabilities such as cross-site scripting, cross-site flashing, insecure crossdomain policies, and sensitive data storage in Flash. It provides examples of how these vulnerabilities can be exploited and recommendations for more secure development practices.

Attacking HTML5
Attacking HTML5Attacking HTML5
Attacking HTML5

The document discusses attacking HTML5. It begins with an introduction to HTML5 tags, attributes, and features like geolocation, drag and drop, and storage options. It then covers ways these features can be attacked, including stealing data from storage, spoofing data to cause CSRF or XSS, and dumping data from SQL storage. Specific attacks are demonstrated against cross-origin resource sharing, cross-document messaging, clickjacking, and exploiting new vulnerabilities with older attacks. The document concludes that while HTML5 provides new browser capabilities, attackers can find innovative ways to exploit these features maliciously.

appsec labshtml5hacking
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight

The document compares various features of HTML5 and Silverlight, including platforms supported, storage options, databases, offline capabilities, threading models, communication APIs, notifications, audio/video support, canvas drawing, and other miscellaneous features. Key differences discussed include HTML5's broader platform support versus Silverlight's reliance on the .NET framework and browser plugins. The document provides overviews and comparisons to help understand how the technologies compare in various areas.

silverlighthtml5
Open Source
        But then everyone will see my code and steal all
        of my fantastically incredible ideas!
                                         - Mike circa 2002




© SitePen, Inc. 2009. All Rights Reserved
HSO: AS3 was a mistake
                                            - Mike circa today




© SitePen, Inc. 2009. All Rights Reserved
Q&A




© SitePen, Inc. 2009. All Rights Reserved
Thank you!



© SitePen, Inc. 2009. All Rights Reserved

Recommended for you

Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5

Slides I co-presented with John Dyer at the 2010 Echo Conference in Dallas, TX. http://johndyer.name/ http://echoconference.com/

echo conferencehtml5css3
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more

This document discusses various topics related to developing web apps, including HTML5, responsive design, touch events, offline capabilities, and debugging tools. It provides links to resources on HTML5 features like media queries, SVG, web workers, and the page visibility API. It also covers techniques for adapting content like responsive web design, progressive enhancement, and server-side adaptation. Mobile browser stats and popular devices on Douban are mentioned. Frameworks like Bootstrap and tools like Weinre for debugging mobile apps are referenced.

readermobile application developmentweb applications
Web app and more
Web app and moreWeb app and more
Web app and more

This document discusses various techniques for making web applications work offline and with unreliable network connections, including: - The application cache manifest which allows specifying cached resources to work offline - Issues with the current manifest specification and potential enhancements - The window.applicationCache API for caching resources and monitoring cache status - Detecting online/offline status using the navigator.onLine property In 3 sentences or less, it summarizes approaches for offline web applications using the application cache manifest, applicationCache API, and navigator.onLine property.

web application

More Related Content

What's hot

Adobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer IntroductionAdobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer Introduction
Yash Mody
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
philogb
 
Adobe CQ5 for Developers - Introduction
Adobe CQ5 for Developers - IntroductionAdobe CQ5 for Developers - Introduction
Adobe CQ5 for Developers - Introduction
Tekno Point
 
Catch 22: FLex APps
Catch 22: FLex APpsCatch 22: FLex APps
Catch 22: FLex APps
Yash Mody
 
Develop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will loveDevelop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will love
Chris Love
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
Mark Leusink
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
Taylor Lovett
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Alessandro Pilotti
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
Chris Love
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
Taylor Lovett
 
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web Development
Irfan Maulana
 
Isomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWPIsomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWP
Taylor Lovett
 
HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1
James Pearce
 
Best Friend || Worst Enemy: WordPress Multisite
Best Friend || Worst Enemy: WordPress MultisiteBest Friend || Worst Enemy: WordPress Multisite
Best Friend || Worst Enemy: WordPress Multisite
Taylor McCaslin
 
Advanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms toolsAdvanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms tools
Chris Love
 
BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPages
edm00se
 
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NY
Maximiliano Firtman
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
Rob Davarnia
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
Mark Roden
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
Timothy Fisher
 

What's hot (20)

Adobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer IntroductionAdobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer Introduction
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
 
Adobe CQ5 for Developers - Introduction
Adobe CQ5 for Developers - IntroductionAdobe CQ5 for Developers - Introduction
Adobe CQ5 for Developers - Introduction
 
Catch 22: FLex APps
Catch 22: FLex APpsCatch 22: FLex APps
Catch 22: FLex APps
 
Develop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will loveDevelop a vanilla.js spa you and your customers will love
Develop a vanilla.js spa you and your customers will love
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
 
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web Development
 
Isomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWPIsomorphic WordPress Applications with NodeifyWP
Isomorphic WordPress Applications with NodeifyWP
 
HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1
 
Best Friend || Worst Enemy: WordPress Multisite
Best Friend || Worst Enemy: WordPress MultisiteBest Friend || Worst Enemy: WordPress Multisite
Best Friend || Worst Enemy: WordPress Multisite
 
Advanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms toolsAdvanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms tools
 
BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPages
 
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NY
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 

Viewers also liked

나는 PM이다! 30회 진혜경 발표자료
나는 PM이다! 30회 진혜경 발표자료나는 PM이다! 30회 진혜경 발표자료
나는 PM이다! 30회 진혜경 발표자료
Dong-Hwan Han, Ph.D.
 
Restaurant Roll-up Transaction
Restaurant Roll-up TransactionRestaurant Roll-up Transaction
Restaurant Roll-up Transaction
Alex W. Howard
 
知慧의 장 정보지_10월호
知慧의 장 정보지_10월호知慧의 장 정보지_10월호
知慧의 장 정보지_10월호
Seon Hong Kim
 
ICANN 51 로스앤젤레스 비즈니스 다이제스트
 ICANN 51 로스앤젤레스 비즈니스 다이제스트  ICANN 51 로스앤젤레스 비즈니스 다이제스트
ICANN 51 로스앤젤레스 비즈니스 다이제스트
ICANN
 
천연미장 기법 강의20150503
천연미장 기법 강의20150503천연미장 기법 강의20150503
천연미장 기법 강의20150503
Seongwon Kim
 
Shall we play a game?
Shall we play a game?Shall we play a game?
Shall we play a game?
Maciej Lasyk
 

Viewers also liked (6)

나는 PM이다! 30회 진혜경 발표자료
나는 PM이다! 30회 진혜경 발표자료나는 PM이다! 30회 진혜경 발표자료
나는 PM이다! 30회 진혜경 발표자료
 
Restaurant Roll-up Transaction
Restaurant Roll-up TransactionRestaurant Roll-up Transaction
Restaurant Roll-up Transaction
 
知慧의 장 정보지_10월호
知慧의 장 정보지_10월호知慧의 장 정보지_10월호
知慧의 장 정보지_10월호
 
ICANN 51 로스앤젤레스 비즈니스 다이제스트
 ICANN 51 로스앤젤레스 비즈니스 다이제스트  ICANN 51 로스앤젤레스 비즈니스 다이제스트
ICANN 51 로스앤젤레스 비즈니스 다이제스트
 
천연미장 기법 강의20150503
천연미장 기법 강의20150503천연미장 기법 강의20150503
천연미장 기법 강의20150503
 
Shall we play a game?
Shall we play a game?Shall we play a game?
Shall we play a game?
 

Similar to Flash And Dom

HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
ACCESS
 
Flash Security, OWASP Chennai
Flash Security, OWASP ChennaiFlash Security, OWASP Chennai
Flash Security, OWASP Chennai
lavakumark
 
Attacking HTML5
Attacking HTML5Attacking HTML5
Attacking HTML5
AppSec_Labs
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
Matt Casto
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
Nathan Smith
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
Yan Shi
 
Web app and more
Web app and moreWeb app and more
Web app and more
faming su
 
A look into A-Frame
A look into A-FrameA look into A-Frame
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
Panagiotis Grigoropoulos
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Sanjeev ghai 12
Sanjeev ghai 12Sanjeev ghai 12
Sanjeev ghai 12
Praveen kumar
 
Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer
Leveraging BlazeDS, Java, and Flex: Dynamic Data TransferLeveraging BlazeDS, Java, and Flex: Dynamic Data Transfer
Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer
Joseph Labrecque
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
George Kanellopoulos
 
Content-Security-Policy 2018.0
Content-Security-Policy 2018.0Content-Security-Policy 2018.0
Content-Security-Policy 2018.0
Philippe Gamache
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
Anup Hariharan Nair
 
Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008
Jeremiah Grossman
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
Sascha Corti
 
Firefox OS in Japan
Firefox OS in JapanFirefox OS in Japan
Firefox OS in Japan
dynamis
 
The Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devicesThe Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devices
Wesley Hales
 

Similar to Flash And Dom (20)

HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
Flash Security, OWASP Chennai
Flash Security, OWASP ChennaiFlash Security, OWASP Chennai
Flash Security, OWASP Chennai
 
Attacking HTML5
Attacking HTML5Attacking HTML5
Attacking HTML5
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 
A look into A-Frame
A look into A-FrameA look into A-Frame
A look into A-Frame
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
Sanjeev ghai 12
Sanjeev ghai 12Sanjeev ghai 12
Sanjeev ghai 12
 
Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer
Leveraging BlazeDS, Java, and Flex: Dynamic Data TransferLeveraging BlazeDS, Java, and Flex: Dynamic Data Transfer
Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
 
Content-Security-Policy 2018.0
Content-Security-Policy 2018.0Content-Security-Policy 2018.0
Content-Security-Policy 2018.0
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
Firefox OS in Japan
Firefox OS in JapanFirefox OS in Japan
Firefox OS in Japan
 
The Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devicesThe Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devices
 

More from Mike Wilcox

Accessibility for Fun and Profit
Accessibility for Fun and ProfitAccessibility for Fun and Profit
Accessibility for Fun and Profit
Mike Wilcox
 
WTF R PWAs?
WTF R PWAs?WTF R PWAs?
WTF R PWAs?
Mike Wilcox
 
Advanced React
Advanced ReactAdvanced React
Advanced React
Mike Wilcox
 
Webpack: What it is, What it does, Whether you need it
Webpack: What it is, What it does, Whether you need itWebpack: What it is, What it does, Whether you need it
Webpack: What it is, What it does, Whether you need it
Mike Wilcox
 
Dangerous CSS
Dangerous CSSDangerous CSS
Dangerous CSS
Mike Wilcox
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
Mike Wilcox
 
Great Responsive-ability Web Design
Great Responsive-ability Web DesignGreat Responsive-ability Web Design
Great Responsive-ability Web Design
Mike Wilcox
 
Professional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsProfessional JavaScript: AntiPatterns
Professional JavaScript: AntiPatterns
Mike Wilcox
 
Model View Madness
Model View MadnessModel View Madness
Model View Madness
Mike Wilcox
 
Hardcore JavaScript – Write it Right
Hardcore JavaScript – Write it RightHardcore JavaScript – Write it Right
Hardcore JavaScript – Write it Right
Mike Wilcox
 
The Great Semicolon Debate
The Great Semicolon DebateThe Great Semicolon Debate
The Great Semicolon Debate
Mike Wilcox
 
AMD - Why, What and How
AMD - Why, What and HowAMD - Why, What and How
AMD - Why, What and How
Mike Wilcox
 
Dojo & HTML5
Dojo & HTML5Dojo & HTML5
Dojo & HTML5
Mike Wilcox
 
Webpage Design Basics for Non-Designers
Webpage Design Basics for Non-DesignersWebpage Design Basics for Non-Designers
Webpage Design Basics for Non-Designers
Mike Wilcox
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End Developer
Mike Wilcox
 
A Conversation About REST
A Conversation About RESTA Conversation About REST
A Conversation About REST
Mike Wilcox
 
The Fight Over HTML5
The Fight Over HTML5The Fight Over HTML5
The Fight Over HTML5
Mike Wilcox
 
The Fight Over HTML5
The Fight Over HTML5The Fight Over HTML5
The Fight Over HTML5
Mike Wilcox
 
How to get a Job as a Front End Developer
How to get a Job as a Front End DeveloperHow to get a Job as a Front End Developer
How to get a Job as a Front End Developer
Mike Wilcox
 
The History of HTML5
The History of HTML5The History of HTML5
The History of HTML5
Mike Wilcox
 

More from Mike Wilcox (20)

Accessibility for Fun and Profit
Accessibility for Fun and ProfitAccessibility for Fun and Profit
Accessibility for Fun and Profit
 
WTF R PWAs?
WTF R PWAs?WTF R PWAs?
WTF R PWAs?
 
Advanced React
Advanced ReactAdvanced React
Advanced React
 
Webpack: What it is, What it does, Whether you need it
Webpack: What it is, What it does, Whether you need itWebpack: What it is, What it does, Whether you need it
Webpack: What it is, What it does, Whether you need it
 
Dangerous CSS
Dangerous CSSDangerous CSS
Dangerous CSS
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Great Responsive-ability Web Design
Great Responsive-ability Web DesignGreat Responsive-ability Web Design
Great Responsive-ability Web Design
 
Professional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsProfessional JavaScript: AntiPatterns
Professional JavaScript: AntiPatterns
 
Model View Madness
Model View MadnessModel View Madness
Model View Madness
 
Hardcore JavaScript – Write it Right
Hardcore JavaScript – Write it RightHardcore JavaScript – Write it Right
Hardcore JavaScript – Write it Right
 
The Great Semicolon Debate
The Great Semicolon DebateThe Great Semicolon Debate
The Great Semicolon Debate
 
AMD - Why, What and How
AMD - Why, What and HowAMD - Why, What and How
AMD - Why, What and How
 
Dojo & HTML5
Dojo & HTML5Dojo & HTML5
Dojo & HTML5
 
Webpage Design Basics for Non-Designers
Webpage Design Basics for Non-DesignersWebpage Design Basics for Non-Designers
Webpage Design Basics for Non-Designers
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End Developer
 
A Conversation About REST
A Conversation About RESTA Conversation About REST
A Conversation About REST
 
The Fight Over HTML5
The Fight Over HTML5The Fight Over HTML5
The Fight Over HTML5
 
The Fight Over HTML5
The Fight Over HTML5The Fight Over HTML5
The Fight Over HTML5
 
How to get a Job as a Front End Developer
How to get a Job as a Front End DeveloperHow to get a Job as a Front End Developer
How to get a Job as a Front End Developer
 
The History of HTML5
The History of HTML5The History of HTML5
The History of HTML5
 

Recently uploaded

DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
Enterprise Wired
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 

Recently uploaded (20)

DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 

Flash And Dom

  • 1. Flash and the DOM Why you still need to know JavaScript *not* AIR and AJAX ! by Mike Wilcox mwilcox@sitepen.com Twitter: #clubajax http://clubajax.org
  • 2. Mike © SitePen, Inc. 2009. All Rights Reserved
  • 3. © SitePen, Inc. 2009. All Rights Reserved
  • 4. My Flash and JavaScript background © SitePen, Inc. 2009. All Rights Reserved
  • 5. What we will discuss ActionScript & JavaScript similarities and differences The embed & object code ActionScript JavaScript Communication Flash DOM gotchas Future of Flash © SitePen, Inc. 2009. All Rights Reserved
  • 6. I don't need to know about browser issues - because I code in ActionScript! - Mike circa 2002 © SitePen, Inc. 2009. All Rights Reserved
  • 7. Flash in the browser You're still at the mercy of the container (the browser) IE, Firefox, Safari (WebKit) all have different problems implementing the Flash plugin There may come a time when the customer wants that full-page Flex app to interact with their existing HTML code © SitePen, Inc. 2009. All Rights Reserved
  • 8. ActionScript & JavaScript Similarities and Differences © SitePen, Inc. 2009. All Rights Reserved
  • 9. Language Similarities Both based on the ECMAScript standard AS1 and JavaScript very similar AS2 still similar but with classes and packages AS3 actually more like Java with closures AS3 based on early ECMAScript 2 which has since changed Key difference is Document and Stage, MovieClips and DOM Nodes © SitePen, Inc. 2009. All Rights Reserved
  • 10. ActionScript & JavaScript Both scripting languages SWF compiler combines scripts, removes whitespace and comments, mini es variables, turns it into bytecode, and compresses. AJAX build tools combine scripts, remove whitespace and comments, minify the variables. The end result is then compressed using GZIP on the server. Key difference is the SWF wrapper holds all media (images, sounds, etc.) © SitePen, Inc. 2009. All Rights Reserved
  • 11. SWF and HTML both stream Actually both are progressive download SWF compilers assemble the pieces so that elements can display and run when enough data has downloaded HTML page streams line by line and executes or displays © SitePen, Inc. 2009. All Rights Reserved
  • 12. Web APIs / Web Services JavaScript: XHR and JSONP XHR (XmlHttpRequest) has cross domain issues eval sends a string to the JavaScript engine to be interpreted eval(“alert(1 + 2);”); // alerts 3 Flash: XML & Remoting XML is heavy on the wire Remoting needs a server that handles it crossdomain.xml - newer browsers are supporting this © SitePen, Inc. 2009. All Rights Reserved
  • 13. Embedding the SWF In the meantime, Eolas might sue every last, lousy company in creation © SitePen, Inc. 2009. All Rights Reserved
  • 14. The bare bones embed object <object> <param name=movie value="myMovie.swf"> <embed src="myMovie.swf" /> </object> © SitePen, Inc. 2009. All Rights Reserved
  • 15. object vs. embed object for IE object node has attributes object has child nodes with more attributes embed for everyone else No child attributes Can be a child of the object node © SitePen, Inc. 2009. All Rights Reserved
  • 16. A more typical embed object <object width="480" height="270" align="middle" codebase="http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=9,0,0,0" classid="clsid:d27cdb6e- ae6d-11cf-96b8-444553540000" name="my__player" id="my__player"> <param value="always" name="allowScriptAccess"/> <param value="true" name="allowFullScreen"/> <param value="http://flash.local/my__player.swf? prefsfile=http://flash.local/xml/prefs_skunk.xml" name="movie"/> <param value="my_movie" name="name"/> <param value="my_movie" name="id"/> <param value="high" name="quality"/> <param value="#ffffff" name="bgcolor"/> <embed width="480" height="270" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" name="my__player" bgcolor="#ffffff" quality="high" src="http://flash.local/my__player.swf? prefsfile=http://flash.local/xml/prefs_skunk.xml"/> </object> © SitePen, Inc. 2009. All Rights Reserved
  • 17. Attributing Attributes - object Root attributes width, height, align, codebase, classid, name, id Child attributes - passed to the player once it is started. allowScriptAccess, allowFullScreen, movie (src), wmode, swLiveConnect © SitePen, Inc. 2009. All Rights Reserved
  • 18. Attributing Attributes - embed Can be a root node or child of object node As a child, browser determine whther to ignore the embed tags or the object tags No embed child nodes Root attributes width, height, align, name, id, allowScriptAccess, allowFullScreen, src, wmode, pluginspage, type, swLiveConnect © SitePen, Inc. 2009. All Rights Reserved
  • 19. Solution: Dynamic embedding With thanks to that damn Eolas More control over the myriad attributes Better reusability Most attributes can be preset Sets up ExternalInterface for you Fires events for SWF readiness Bonus: SEO! © SitePen, Inc. 2009. All Rights Reserved
  • 20. Dynamic embedding libraries SWFObject dojox.embed.Flash AC_RunActiveContent.js Mike’s custom code © SitePen, Inc. 2009. All Rights Reserved
  • 21. Mike’s custom code example <body> <div align=center> <script src="mike.js" id="MIKE" config="swf=my_player,width=480,height=270" > </script> </div> </body> © SitePen, Inc. 2009. All Rights Reserved
  • 22. Mike’s custom code highlights // find where this script is attached in the dom var snode; var scripts = document.getElementsByTagName("script"); for (var i = 0; i < scripts.length; i++) { if (scripts[i].id && scripts[i].id == "MIKE") { snode = scripts[i]; break; } } // Get the variables from the config attribute in the script var configStr = snode.getAttribute("config"); var attrs = convertToAttributes(configStr); // The parent node of the script is where we insert the SWF playerdiv = snode.parentNode; playerdiv.style.width = flashArgs.width; playerdiv.style.height = flashArgs.height; © SitePen, Inc. 2009. All Rights Reserved
  • 23. Mike’s custom code the embed object var str = '<object id="'+args.id+'" name="'+args.id+'" ' + 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ' + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=9,0,0,0" ' + 'width="'+args.width+'" height="'+args.height+'">' + '<param name="allowScriptAccess" value="'+args.asa+'" />' + '<param name="allowFullScreen" value="'+args.fs+'" />' + '<param name="movie" value="'+args.id+'" />' + '<param name="name" value="'+args.src+'" />' + '<param name="id" value="'+args.id+'" />' + '<param name="wmode" value="'+args.wmode+'" />' + '<embed src="'+args.src+'" ' + 'width="'+args.width+'" height="'+args.height+'" ' + 'name="'+args.id+'" ' + 'allowScriptAccess="'+args.asa+'" ' + 'allowFullScreen="'+args.fs+'" ' + 'wmode="'+args.wmode+'" ' + 'type="application/x-shockwave-flash" ' + 'pluginspage="http://www.macromedia.com/go/ getflashplayer" />' + '</object>'; © SitePen, Inc. 2009. All Rights Reserved
  • 24. embed and object in the same doc? Most libraries do a browser sniff and only use one or the other In my opinion this is unnecessary because: Modern browsers elegantly ignore the other tag No bytes on the wire saved The dynamic code base is more complex The browser sniffing is what adds bytes on the wire and execution time to for parsing You lose the ability for the YouTube embed © SitePen, Inc. 2009. All Rights Reserved
  • 25. Getting that movie var swfById = function (movieName){ if(document.embeds[movieName]){ return document.embeds[movieName]; } if(document[movieName]){ return doc[movieName]; } if(window[movieName]){ return window[movieName]; } if(document[movieName]){ return document[movieName]; } return null; } © SitePen, Inc. 2009. All Rights Reserved
  • 26. Getting ActionScript and JavaScript to Talk Mommy! Daddy! Stop ghting! © SitePen, Inc. 2009. All Rights Reserved
  • 27. AS / JS Communication ExternalInterface FlashVars GetVariable/SetVariable Largely deprecated for AS3 Movie properties Primarily PercentLoaded fscommand Complete with VB Script! Which thankfully died a bloody death © SitePen, Inc. 2009. All Rights Reserved
  • 28. ExternalInterface Introduced in Flash 8 after years of abusive punishment to devs, forcing them to use the fscommand And then the Flash 8 EI was coded by drunken sailors Flash 9 EI much better But you still have craziness like this patch: window.attachEvent('onunload', function() { window.__flash__removeCallback = function (instance, name) { try { if (instance) instance[name] = null; } catch ( err ) { } }; }); © SitePen, Inc. 2009. All Rights Reserved
  • 29. ExternalInterface Examples © SitePen, Inc. 2009. All Rights Reserved
  • 30. FlashVars FlashVars attribute introduced in Flash 6 although the query string was used before that and there’s little difference No complex objects without serialization - similar to sephiroth library Examples of the need for FlashVars: Dynamic creation, as in the Dojo FileUploader URLs to connect to © SitePen, Inc. 2009. All Rights Reserved
  • 31. FlashVars <object> <param name=movie value="myMovie.swf"> <param name=FlashVars value="user=Mike&score=1000"> <embed src="myMovie.swf" FlashVars="user=Mike&score=1000" /> </object> or <object> <param name=movie value="myMovie.swf?user=Mike&score=1000"> <embed src="myMovie.swf?user=Mike&score=1000" /> </object> // accessed in AS2 in _root: _root.user // accessed in AS3: var params = LoaderInfo(this.root.loaderInfo).parameters; params.user; © SitePen, Inc. 2009. All Rights Reserved
  • 32. FlashVars Examples © SitePen, Inc. 2009. All Rights Reserved
  • 33. Flash/Browser Gotchas © SitePen, Inc. 2009. All Rights Reserved
  • 34. Flash/Browser Gotchas Flash will not initialize in a node with display=”none” DOM must be "ready" before the SWF can be inserted in node - using window.onload (or something better) Watch IE6 & IE7 Memory leaks - especially when using the ExternalInterface Detecting Mouse Events outside of SWF TabIndex between a SWF and HTML is non-existent You've heard those stories of bad Java applet implementations? Flash isn't a whole lot better. © SitePen, Inc. 2009. All Rights Reserved
  • 35. Future of Flash FutureSplash ShockWaveFlash Macromedia Flash Adobe Flash Microsoft Flash © SitePen, Inc. 2009. All Rights Reserved
  • 36. Is Flash Dead? Rumors of my death have been greatly exaggerated. - Paul McCartney © SitePen, Inc. 2009. All Rights Reserved
  • 37. Open Source But then everyone will see my code and steal all of my fantastically incredible ideas! - Mike circa 2002 © SitePen, Inc. 2009. All Rights Reserved
  • 38. HSO: AS3 was a mistake - Mike circa today © SitePen, Inc. 2009. All Rights Reserved
  • 39. Q&A © SitePen, Inc. 2009. All Rights Reserved
  • 40. Thank you! © SitePen, Inc. 2009. All Rights Reserved

Editor's Notes

  1. Software engineer at SitePen, and one of the founder of the DFW user group Club AJAX. I&amp;#x2019;m an AJAX expert with a lot of experience in HTML, CSS, and Flash as well as a lot of video. I&amp;#x2019;m a dojo committer and have written and maintain several dojo components including the DEFT project that integrates Flash into Dojo AJAX components
  2. A very well run, small company with a high customer satisfaction rate. Builds exceptional web apps that other companies have trouble with. Well known in the AJAX/OS community. Makers of the Dojo Toolkit which I&amp;#x2019;ll reference in the presentation
  3. Started with HTML and CSS - Used Flash early on with Real Media in HTML and controlled everything via JS - Struggled with the Netscape IE feud - When Netscape died, focused on IE sites - suddenly a client said &amp;#x201C;this doesn&amp;#x2019;t work in FF&amp;#x201D; - starting getting into JS in depth, and discovered AJAX and Open Source - I do AJAX, AS2, AS3, and AIR&amp;#x2026; but not a Flex guy
  4. Possibly note the irony of comparing AS and JS while showing the new &amp;#x201C;brands&amp;#x201D; of each product from splash screens and popup windows
  5. EcmaScript 2: Harmony
  6. Flash can&apos;t do a jsonp call explain what it is, why it won&apos;t work without eval
  7. Note that other AJAX libraries don&amp;#x2019;t have obvious support for SWF embedding We&amp;#x2019;ll focus on the eponymously named Mike&amp;#x2019;s custom code
  8. Good time to mention that &amp;#x201C;Mike&amp;#x2019;s code&amp;#x201D; is not publicly available, but there&amp;#x2019;s a strong chance the concepts will end up in dojo, and an outside chance of it being released as Club AJAX code
  9. Technique wouldn&apos;t work in very old browsers like Netscape 6 Note the root atts ***And duplicate use of ID and name codebase and plugins page trigger the expressInstall ie tests for versions, other browser do not and would need custom detectors
  10. Note that other AJAX libraries don&amp;#x2019;t have obvious support for SWF embedding We&amp;#x2019;ll focus on the eponymously named Mike&amp;#x2019;s custom code
  11. fscommand required doc.write which was very limiting
  12. replacement for fscommand required doc.write which was very limiting comm bridge between JS and AS AS makes calls to JS and creates functions in the JS enviro for JS to call (without erroring)
  13. Mention Uploader woes
  14. The Microsoft thing&amp;#x2026; joke.
  15. Silverlight and Microsoft will kill Flash. AJAX will kill Flash. Flash isn&amp;#x2019;t going anywhere. It&amp;#x2019;s achieved incredible market penetration with its plugin, and Adobe continues to deliver on exciting technologies that AJAX apps have to wait years for. While an MS-backed Silverlight does create competition, the winner of that competition will most likely will be developers and users.
  16. The web has evolved at a blistering pace. It was only 15 years ago that it was being used for little more than research papers (remember getting drivers off of bulletin boards?), whereas today it is the de-facto application deployment platform. A key enabler of this high rate of evolutionary change is the ability of web developers to understand what others have done in order to achieve a particular outcome and to copy that technique. We have been trained nearly our whole lives to think that copying is bad, but we know at some level that this is how we learn. A web that isn&amp;#x2019;t &amp;#x201C;view source&amp;#x201D;-able isn&amp;#x2019;t &amp;#x201C;the web&amp;#x201D;. We need to come to terms with the long-term costs of lowered productivity and higher incremental costs for any platform that doesn&amp;#x2019;t preserve the &amp;#x201C;view source&amp;#x201D; capability as a default property of the platform. We&amp;#x2019;re all reaping the benefits of decisions made 15 years ago, all the while discussing new technologies that endanger that value chain without a cogent discussion of the costs and benefits. We need to think hard about this.
  17. Java-like code creates a barrier of entry - is a move away from ECMAScript which is growing in popularity and is the language that helped Flash grow - shuts out previous Flash non-OO coders - AS3 takes longer to write - WebKit proves that strict typing isn&amp;#x2019;t necessary for speed