XHMTL 1.0 Youtube Video - xhtml

I've gotten the following code :
<object type="application/x-shockwave-flash" style="width:420px; height:240px;" data="http://www.youtube.com/v/zOETaUx3c4o?color2=FBE9EC&version=3">
<param name="movie" value="http://www.youtube.com/v/zOETaUx3c4o?color2=FBE9EC&version=3" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />
</object><div style="font-size: 0.8em"></div>
It currently works on Google Chrome and the video does play. However, when doing validation I am being given an error and I can't seem to resolve the issue. Does anyone have any idea why I'm receiving such an error :
Line 92, Column 152: document type does not allow element "object" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "address", "fieldset", "ins", "del" start-tag
…40px;" data="http://www.youtube.com/v/zOETaUx3c4o?color2=FBE9EC&version=3">
Thanks

Related

Element "embed" undefined, XHTML 1.0 Transitional (W3C)

I am trying to validate my page as XHTML 1.0 Transitional (W3C).
And I have the following error:
element "embed" undefined
+
there is no attribute "src",
there is no attribute "quality",
there is no attribute "width"
there is no attribute "height",
there is no attribute "align",
there is no attribute "bgcolor",
there is no attribute "name"
please see the source code:
<embed src="<?php info(template_directory); ?>/images/top-flash.swf"
quality="high" bgcolor="#000099"
width="960" height="362"
name="flash" align="left"
allowScriptAccess="sameDomain"
allowFullScreen="false"
wmode="transparent"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"
vspace="0" hspace="0"
style="padding:0; margin:0;" />
Please help me to pass this validation.
As #MichaelWagner has stated, element is really "not defined in XHTML 1.0 Transitional standard".
However, another solution could be to not changing the doctype, but changing the embed to object.
Thus Your code for including a .swf file could look like this:
<object type="application/x-shockwave-flash" data="TEMPLATE_DIRECTORY/images/top-flash.swf" width="960" height="362" name="flash" align="left" style="padding:0; margin:0;">
<param name="movie" value="TEMPLATE_DIRECTORY/images/top-flash.swf" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowfullscreen" value="false" />
<param name="bgcolor" value="#000099" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
Get Adobe Flash Player
</object>
Results in:
This document was successfully checked as XHTML 1.0 Transitional!
The following transformations apply (from embed to object):
allowScriptAccess="sameDomain" > <param name="allowScriptAccess"
value="sameDomain" />
allowFullScreen="false" > <param name="allowfullscreen"
value="false" />
bgcolor="#000099" > <param name="bgcolor" value="#000099" />
quality="high" > <param name="quality" value="high" />
wmode="transparent" > <param name="wmode" value="transparent" />
pluginspage="http://www.macromedia.com/go/getflashplayer" > Get Adobe Flash Player
Don't forget to change TEMPLATE_DIRECTORY/images/top-flash.swf to the original <?php info(template_directory); ?>/images/top-flash.swf
The embed element is not defined in XHTML1.0 Transitional standard. You have to remove the element or change your doctype to pass the test.

How to allow embed inline tags in TinyMCE

I have TinyMCE control on my page ( asp.net page ). I'm trying to edit html and insert embed tags, but as soon as I switch to WYSIWYG mode, and then back to html edit mode, I can see that embed tags were cleared out, and added as a new PARAM inline tags for the OBJECT tag. Here's example html
<OBJECT id=ETFflash1016 codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" classid=clsid:d27cdb6e-ae6d-11cf-96b8-444553540000 width=345 align=middle height=230>
<PARAM NAME="ProfileAddress" VALUE="">
<PARAM NAME="ProfilePort" VALUE="0">
<PARAM NAME="AllowNetworking" VALUE="all">
<PARAM NAME="AllowFullScreen" VALUE="false">
<PARAM NAME="AllowFullScreenInteractive" VALUE="false">
<PARAM NAME="IsDependent" VALUE="0">
<embed src="/video/ETFflash1016.swf.cms" quality="high" bgcolor="#ffffff" width="345" height="230" name="ETFflash1016" align="left" allowScriptAccess="sameDomain" allowFullScreen="false" wmode="Transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>
</OBJECT>
So this has been transformed to this
<object id="ETFflash1016" width="345" height="230" data="../../../video/ETFflash1016.swf.cms" type="application/x-shockwave-flash">
<param name="Profile" value="0" />
<param name="ProfilePort" value="0" />
<param name="AllowNetworking" value="all" />
<param name="AllowFullScreen" value="false" />
<param name="AllowFullScreenInteractive" value="false" />
<param name="IsDependent" value="0" />
<param name="src" value="../../../video/ETFflash1016.swf.cms" />
<param name="name" value="ETFflash1016" />
<param name="bgcolor" value="#ffffff" />
<param name="wmode" value="Transparent" />
<param name="allowfullscreen" value="false" />
<param name="quality" value="high" />
</object>
As you may have noticed, embed tag's attributes became param inline tags for object tag.
I've searched the web, and the main solution was to add media plugin, set media_strict to false, but it didn't help, so I continue to search, and came across another suggestion - use extended_valid_elements but no lack so far. Here's the init function of my TinyMCE control
tinyMCE.init({
mode: "exact",
theme: "advanced",
plugins: "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,spellchecker,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist",
media_strict: "false",
convert_urls: "false",
theme_advanced_resizing: true,");
onchange_callback : "HandleTinyEditorChange",
valid_elements : "*[*]\",
extended_valid_elements : "object[width|height|classid|codebase],param[name|value],embed[src|type|width|height|flashvars|wmode]"
});
What I'm doing wrong ? How can I make this work ?
I'm using TinyMCE v.3.9.2
So the problem turned to be ridiculous. media_strict and convert_urls accept booleans not strings, so I just had to pass boolean values to those params instead of strings, and it works like a charm.
tinyMCE.init({
mode: "exact",
theme: "advanced",
plugins: "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,spellchecker,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist",
media_strict: false,
convert_urls: false,
theme_advanced_resizing: true,");
onchange_callback : "HandleTinyEditorChange",
valid_elements : "*[*]\",
extended_valid_elements : "object[width|height|classid|codebase],param[name|value],embed[src|type|width|height|flashvars|wmode]"
});

Embed Flash in IE not working

i created a small menu in flash that i want to embed into my website. The problem is it works in firefox but not in IE.
Could you help me please i am completely new to Flash
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="540" height="50">
<param name="main" value="/Flash/main.swf" />
<param name="play" value="true"/>
<param name="loop" value="true"/>
<param name="scale" value="showall"/>
<param name="wmode" value="window"/>
<param name="menu" value="true"/>
<param name="allowFullScreen" value="false"/>
<param name="allowScriptAccess" value="sameDomain"/>
<param name="quality" value="high" />
<embed height="50" width="540"
align="middle"
type="application/x-shockwave-flash"
salign=""
allowscriptaccess="sameDomain"
allowfullscreen="false"
menu="true"
name="main"
bgcolor="#ffffff"
devicefont="false"
wmode="window"
scale="showall"
loop="true"
play="true"
pluginspage="http://www.adobe.com/go/getflashplayer" quality="high" src="/Flash/main.swf"></embed>
</object>
I can't see what's wrong with your code.
Anyway I strongly suggest you use the swfobject script to embed your flash objects. This will solve the issue that flash objects have to be clicked on in IE before they are played.

Addressing properties of a Shockwave Flash object (MultiPowUpload) in JavaScript

Please pardon the dumb newbie question; I've only been programming Javascript for about 24 hours... :)
I have managed (with some outside help) to embed a shockwave flash object into my page - specifically MultiPowUpload 2.1. It's appearing nicely on the page and seems to be functioning correctly; we can take that part as read.
Now I'm trying to do some more advanced stuff in JavaScript - I have a button, and in the onClick() code I have the following:
var swf = document.getElementById("FlashFilesUpload1");
var itemsCount = swf.filesCount;
alert("items: "+itemsCount);
But the alert statement tells me "items: undefined". It does the same if I set itemsCount to swf.nonExistentProperty - everything is "undefined". But from what I read in the documentation, there definitely is a filesCount property. I tried accessing all the other properties and methods of this swf object, and none of them work, except for toString(), which returns "HTMLObjectElement".
I am obviously addressing this object incorrectly - but what am I doing wrong?
Clarification
In response to #brianpeiris: I am doing this quite differently from the page at the link you suggested. I didn't do this with any great knowledge, I'm just really acting like a monkey, trying to copy other people's code that works, then tweak it so it does what I want... so don't assume I know anything, however obvious - remember, I've only been doing JavaScript for about a day now!
So here's the code for the control itself:
<object id="FlashFilesUpload1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" viewastext>
<!-- Replace symbols " with the " at all parameters values and
symbols "&" with the "%26" at URL values or & at other values!
The same parameters values should be set for EMBED object below. -->
<param name="FlashVars" value="uploadButtonVisible=false&uploadUrl=../ReceiveBulkCases.aspx" />
<param name="BGColor" value="#F8F6E6" />
<param name="Movie" value="ClientSideControls/ElementITMultiPowUpload2.1.swf" />
<param name="Src" value="ClientSideControls/ElementITMultiPowUpload2.1.swf" />
<param name="WMode" value="Window" />
<param name="Play" value="-1" />
<param name="Loop" value="-1" />
<param name="Quality" value="High" />
<param name="SAlign" value="" />
<param name="Menu" value="-1" />
<param name="Base" value="" />
<param name="AllowScriptAccess" value="always" />
<param name="Scale" value="ShowAll" />
<param name="DeviceFont" value="0" />
<param name="EmbedMovie" value="0" />
<param name="SWRemote" value="" />
<param name="MovieData" value="" />
<param name="SeamlessTabbing" value="1" />
<param name="Profile" value="0" />
<param name="ProfileAddress" value="" />
<param name="ProfilePort" value="0" />
<!-- Embed for Netscape,Mozilla/FireFox browsers support. Flashvars parameters are the same.-->
<!-- Replace symbols " with the " at all parameters values and symbols "&" with the "%26" at URL values or & at other values! -->
<embed bgcolor="#F8F6E6" id="EmbedFlashFilesUpload" src="ClientSideControls/ElementITMultiPowUpload2.1.swf"
quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="450" height="350" flashvars="uploadButtonVisible=false&uploadUrl=../ReceiveBulkCases.aspx">
</embed>
</object>
As you see it's embedded in the HTML as an object, unlike the reference you gave, where they do some other trick using script to get it onto the page.
BTW, when I tried it their way (not very hard, I grant you), I didn't manage to get the control even to appear on my page!
Thanks for your help... much appreciated
Edit: I think I finally figured it out! You simply have set the useExternalInterfaces to Yes.
So in your code you would change
<param
name="FlashVars"
value="uploadButtonVisible=false&uploadUrl=../ReceiveBulkCases.aspx" />
to
<param
name="FlashVars"
value="uploadButtonVisible=false&uploadUrl=../ReceiveBulkCases.aspx&useExternalInterface=Yes" />
and do the same for the <embed> tag.
If you visit the demo site and run the following code in Firebug it returns 0 before you select files and the correct count after you select files. Also, if you check the source, you'll see that the useExternalInterface option is set to Yes
alert(document.getElementById('MultiPowUpload').filesCount());
P.S. You should consider using the SWFObject script included with MultiPowUpload. It lets you set and change variables easily without having to worry about cross-browser issues and it also degrades gracefully for users without flash.
Further edit
To answer your comment: Yes, I've got filesCount working on my machine.
One thing I forgot to mention is that you might be trying to retrieve filesCount before the flash control is fully loaded.
The following is the code I'm using. I copied your code exactly and added the useExternalInterface setting as well as my own javascript.
Note that my javascript code repeatedly checks the filesCount every 500 milliseconds using the setInterval function.
<object id="FlashFilesUpload1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" viewastext>
<!-- Replace symbols " with the " at all parameters values and
symbols "&" with the "%26" at URL values or & at other values!
The same parameters values should be set for EMBED object below. -->
<param name="FlashVars" value="uploadButtonVisible=false&uploadUrl=../ReceiveBulkCases.aspx&useExternalInterface=Yes" />
<param name="BGColor" value="#F8F6E6" />
<param name="Movie" value="ClientSideControls/ElementITMultiPowUpload2.1.swf" />
<param name="Src" value="ClientSideControls/ElementITMultiPowUpload2.1.swf" />
<param name="WMode" value="Window" />
<param name="Play" value="-1" />
<param name="Loop" value="-1" />
<param name="Quality" value="High" />
<param name="SAlign" value="" />
<param name="Menu" value="-1" />
<param name="Base" value="" />
<param name="AllowScriptAccess" value="always" />
<param name="Scale" value="ShowAll" />
<param name="DeviceFont" value="0" />
<param name="EmbedMovie" value="0" />
<param name="SWRemote" value="" />
<param name="MovieData" value="" />
<param name="SeamlessTabbing" value="1" />
<param name="Profile" value="0" />
<param name="ProfileAddress" value="" />
<param name="ProfilePort" value="0" />
<!-- Embed for Netscape,Mozilla/FireFox browsers support. Flashvars parameters are the same.-->
<!-- Replace symbols " with the " at all parameters values and symbols "&" with the "%26" at URL values or & at other values! -->
<embed bgcolor="#F8F6E6" id="EmbedFlashFilesUpload" src="ClientSideControls/ElementITMultiPowUpload2.1.swf"
quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="450" height="350" flashvars="uploadButtonVisible=false&uploadUrl=../ReceiveBulkCases.aspx&useExternalInterface=Yes">
</embed>
</object>
<script>
function updateMessage() {
var message = (new Date()).toLocaleTimeString() + ': ';
try {
var objectElement = document.getElementsByTagName('object')[0];
var embedElement = document.getElementsByTagName('embed')[0];
if (objectElement.filesCount) {
message += 'We are in IE ' + objectElement.filesCount();
}
else if (embedElement.filesCount) {
message += 'We are in Firefox ' + embedElement.filesCount();
}
else {
message += "The flash object is not loaded or useExternalInterface is not set to 'Yes'";
}
}
catch (exp) {
message += 'An error occurred';
}
document.getElementById('message').innerHTML = message;
}
// Update the message every 500 milliseconds
setInterval(updateMessage, 500);
</script>

Using FlashVars with Flex 3

I'm trying to pass parameters from HTML-land to Flex-3 Flash-land, and can't seem to get it to work. Here's what I've got (basically the default template, modified with FlashVars):
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="${application}" width="${width}" height="${height}"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="${swf}.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="${bgcolor}" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="flashVars" value="userID=foo&assignmentID=1"/>
<embed src="${swf}.swf" quality="high" bgcolor="${bgcolor}"
width="${width}" height="${height}" name="${application}" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer"
flashVars="userID=foo&assignmentID=1">
</embed>
</object>
</noscript>
And here's the ActionScript (called after the app's creationComplete event is fired):
function initApp() : void
{
// default params
userID = Application.application.parameters.userID;
assignmentID = Application.application.parameters.assignmentID;
if (userID == null || assignmentID == null)
{
Alert.show("I didn't get any params!", "Error");
}
}
Anybody know what's going wrong? I've tried several permutations of this with no luck. (Firefox 3, OS-X, Flash Player 9 FWIW)
Thanks!
I think you want to be setting query params after the .swf stuff too. Try
<embed src="${swf}.swf?userID=foo" quality="high" bgcolor="${bgcolor}"
Try "FlashVars" instead of "flashVars".

Resources