swf file in subfolder not loading - xhtml

The code below on works when my xml and swf file are located in the same directory as the html file. However, when i move both file to a sub directory, nothing shows. I have tried using the absolute path but not much luck. Please help.
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="110" height="110" bgcolor="#f0eee1">
<param name="movie" value="flash/Main.swf?xml_path=flash/Settings.xml" />
<param name="quality" value="high" />
<embed src="flash/Main.swf?xml_path=flash/Settings.xml" quality="high" width="110" height="110" bgcolor="#f0eee1" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

Flash will try to interpret any relative paths as relative to your HTML file. If I had to guess, Flash is misplacing your XML file.
How about adding a base attribute to your object andembed tags? base will let you specify just where relative links should be relative from; in this case, you could supply the absolute path to your subdirectory and Flash will begin looking there for your XML file.
Here's Adobe's write-up on base and how to get started using it.

Related

Frustrating File Path Error

I'm having a bit of a problem with my file paths and I can't figure out what it is.
I'm developing a new website for a company - so I've hired out a URL with a hosting company to develop the site on. The problem is the file paths in the code on the company server pages are different to the ones on my hired server.
In the company server, within the root folder, there's 3 folders and in one of them (htdocs) lies the index.asp page and all the corresponding folders.
However, in my hired server's root folder it has the index.asp and all the corresponding folders - there's no 'htdocs' folder.
Now all the code is 100% correct - it's just the file paths that are stopping the site from working.
My problem is getting a video to work correctly.
On the index page:
<div class="panel">
<a href="../artistVideo/recent.asp?clipid=105" class="lytebox"
data-title="" data-lyte-options="width:600 height:460 scrollbars:no">
...(some meta data)</a>
</div>
In 'clipid=105'.xml file (in 'artistVideo' folder):
<?xml version="1.0" encoding="utf-8"?>
<gallery>
<album title="Blah Blah" description="More Blah">
<img src="../artistSoundClips/ARTIST/THE_MOVIE.flv"
title="Even more Blah" target="_parent"/>
</album>
</gallery>
And in the recent.asp file, which holds a video object (in 'artistVideo' folder):
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/...."
width="570" height="445" align="middle">
<param name="movie" value="../flash/recentwork.swf">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<param name="allowFullScreen" value="true" />
<param name="FlashVars" value="xmlFilePath=<% Response.Write (videoid) %>.xml&xmlFileType=Default" />
<embed src="../flash/recentwork.swf" width="570" height="440"
align="middle" allowFullScreen="true"
FlashVars="xmlFilePath=<% Response.Write (videoid) %>.xml&xmlFileType=Default"
quality="high" wmode="opaque" pluginspage="http://www.adobe.com/shockwave/download/download.cgi? P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash">
</embed>
</object>
So what is happening here is when the panel is clicked, the code looks to recent.asp which refers to the 105.xml file and outputs the video.
This code is taken from the asp pages on the company server and the code is all the same in the files on the hired server but like I said my file paths are wrong - when I take out the ../ on the index page and also the 105.xml page, I get the error message:
GET http://www.mydevelopersite.co.uk/flash/recentwork.swf 404 (Not Found) (recent.asp?clipid=105:1)
GET http://www.mydevelopersite.co.uk/flash/recentwork.swf 404 (Not Found) (recent.asp?clipid=105:1)
So to recap - on my server there's no 'htdocs' folder so all my files and folders are on a level up from that on the company server. And i've tried taking out the ../ from the:
<embed src="../flash/recentwork.swf" width="570"/>
It kicks out the error:
GET http://www.mydevelopersite.co.uk/artistVideo/flash/recentwork.swf 404 (Not Found)
As stated, the code is 100% correct, there's no need to change it, it's just where the file paths are pointing to in relation to where the files and folders are on the hired server. PLEASE could somebody point out where I might be going wrong?!
Thank you!
Use the tilda (~) operator in your control paths and add runat="Server" attribute.
ASP.NET Web Project Paths
For example, to correctly resolve an image path this way, you would change:
<img src="../Images/SampleImage.jpg" />
to:
<img src="~/Images/SampleImage.jpg" ID="myImage" runat="server" />

Suppressing the Tool Information in Adobe

I've been searching for a way to prevent the download of a PDF and I finally found one in HTML5. The code is really simple and is
<embed src="filename.pdf#toolbar=0&navpanes=0&scrollbar=0" width="500" height="375">
The things that suppress the adobe options is #toolbar=0&navpanes=0&scrollbar=0.
My question is, is there a way to do this in non-html5 code? I've tried the following:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
width="99%" height="99%" id="pdf" style="position:absolute; z-index:-1;">
<param name="movie" value="filename.pdf#toolbar=0&navpanes=0&scrollbar=0">
<param name="quality" value="high">
<param name="wmode" value="opaque" />
<param name="Enabled" value="1" />
<param name="toolbar" value="0" />
<param name="navpanes" value="0" />
<param name="scrollbar" value="0" />
<param name="bgcolor" value="##FFFFFF">
<embed nav src="filename.pdf#toolbar=0&navpanes=0&scrollbar=0" quality="high" bgcolor="##FFFFFF" width="99%" height="99%"
name="2003map" align="" type="pdf">
</embed>
</object>
I am not 100% but try adding the values also into the <embed>
<embed nav src="filename.pdf" quality="high" bgcolor="##FFFFFF" width="99%" height="99%"
name="2003map" align="" type="pdf"
toolbar="0" navpanes="0" scrollbar="0"
</embed>
This doubling of info works for wmode so may very well work here too :)
as your users are using a client side engine to render the PDF document there is no way to stop them downloading or saving it. at some point or way the document arrives at the client machine. in case of html it's always easy to have all resources you serve to be saved.
you have to render it on the server if you don't what your pdf as pdf in any case on your client's machine.
you can use an obfuscated flash in combination with Flash Pdf viewer just like scribd and have the pdf's path hidden but this is not 100% secure, because the resource remains accessible, but you can return it as binary from a server side after your viewer swf has identified itself.

Does Google index HTML content supplied by the Object tag

This might be a weird question, but I've been unable to find an answer. Assuming I were to use an Object tag to embed an HTML snippet from an outside source (different server), how does Googles spider view that data? Does it pull in the data source like a browser would or does it only view the alternate content found between the Object tags like an old browser would do?
Example:
<object data="http://www.remotehost.com/data/test.html" type="text/html" width="300" height="200">
alt : test.html
</object>
Does only the "Alt : test.html" get read, or does the source "data/test.html" also get indexed as if it were part of the page?
I basically have an HTML content that customers need to include in their pages without having to do it dynamically using whatever back-end they use to prepare their page (PHP, JSP or whatever). They need the simplest method that doesn't require much back-end work on their part. I'm curious if this method would allow them to have that content included in their search results (their site) and not be indexed as my content from my server (index as content for my domain).
Using Google's Developer Toolbox, and Fetch as Googlebot, I was able to see how the Google spider would interpret the page and it doesn't process the Object data at all. Too bad, I guess I'll have to find another solution.
It seems to me Google had started crawling for things in Object tag since May 2013 and this had caused massive trouble with us.
For example, consider the following Flash embed code:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0"
width="464" height="419" align="middle">
<param name="allowScriptAccess" value="always" />
<param name="movie" value="http://www.example.com/user-guide/loader.swf" />
<param name="base" value="http://www.example.com/user-guide/" />
<param name="flashvars" value="datasource=data.xml" />
<param name="loop" value="false" />
<param name="menu" value="true" />
<param name="quality" value="best" />
<param name="wmode" value="transparent" />
<param name="bgcolor" value="#ffffff" />
<embed src="http://www.example.com/user-guide/loader.swf" base="http://www.example.com/user-guide/"
flashvars="datasource=data.xml"
loop="false" menu="true" quality="best" wmode="transparent"
bgcolor="#ffffff" width="464" height="419" align="middle"
allowScriptAccess="always" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object>
What I found is Google now starts to crawl the http://www.example.com/user-guide/ folder which supposed to be a directory path, result in massive 403 forbidden error!
Google has crawled, recognized and indexed object tags since July-2011. Anything that meets Schema.org standards has the potential to be interpreted and even included in search results where applicable.

Embed flex in asp .net...not working :(

I know the things im missing here are tiny but yet im missing them...heres what im doing
I just copied Flex builder's generated html from the tags, and pasted in an ASP .NET page, the page shows up no errors , I can see a grey rectable the size of my flex file but there's nothing in it its blank .... and I am stumped why ???? Why when it's showing up perfectly fine via the HTML file that flex generates. I need help someone please enlighten me :(
My Code:
----------
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="SlidemFX" width="796px" height="900px"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="SlidemFX.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="SlidemFX.swf" quality="high" bgcolor="#869ca7"
width="796px" height="900px" name="SlidemFX" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
You'll need to put the Flex application itself in the right location relative to your ASP page.

ExternalInterface.call("window.location.host.toString")

I wrote a flex application that get the host string from the browser using this code
ExternalInterface.call("window.location.host.toString")
This line of code work prefectally to get the host string in both Firefox and Opera. However, when using IE, the returned string is always 'null'. I need to get such information from the browser. I know that there is a work around by defining a javascript function that get such string and calling that function from the application. However, my application require getting such information from a native source.
I was wondering if anyone had the same problem and managed to solve it, or if someone has any idea why I always get null in IE, but not when using Firefox and Opera
Edit 1:
Here is the HTML code for embedding the generated SWF file. Maybe this is useful to spot a mistake
<object id="myTest1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="330px" width="600px">
<param name="movie" value="http://www.website.com/test.swf" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<embed id="myTest1" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.website.com/test.swf" allowScriptAccess="always" wmode="transparent" height="330px" width="600px" flashvars=""></embed>
</object>
the id, classid, and the allowScriptAccess are set as shown
Any idea?
Edit 2:
for Lior Cohen
The Flex file is the example used in your first link. The sub-directory history contains history.js, history.css, and historyFrame.html. The HTML page that include the generated SWF file is like this
<html>
<head>
<!-- BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css"/>
<script src="history/history.js" language="javascript"></script>
<!-- END Browser History required section -->
</head>
<body>
<object id="file1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="330px" width="600px">
<param name="movie" value="file.swf" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<embed id="file2" pluginspage="http://www.macromedia.com/go/getflashplayer" src="file.swf" allowScriptAccess="always" wmode="transparent" height="330px" width="600px" flashvars=""></embed>
</object>
<body>
</html>
However, this is still not working as expected.
Edit 3:
I have spotted the problem, however, I cannot fix it. The problem has to do with the javascript engine of IE and not the ExternalInterface nor the object and embed HTML tags.
What I am doing in my case is write the object and embed tags into a div created using javascript and this div is appended to the end of the body using the DOM methods. However, such approach make the InternalInterface always return null in IE (but not in Firefox nor in Opera).
var swfDiv = document.createElement('div');
swfDiv.innerHTML = '<object id="test1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="600" height="330"><param name="movie" value="http://www.website.com/test.swf" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><embed id="test2" name="test2" src="http://www.website.com/test.swf" allowScriptAccess="always" allowFullScreen="false" quality="high" width="600" height="330" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';
document.body.appendChild(swfDiv);
I tried to use document.write to append the HTML content, which made it work perfectly in IE, however, document.write wrote over the entire page (removing old content), which is something I don't want.
document.write('<object id="test1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="600" height="330"><param name="movie" value="http://www.website.com/test.swf" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><embed id="test2" name="test2" src="http://www.website.com/test.swf" allowScriptAccess="always" allowFullScreen="false" quality="high" width="600" height="330" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>');
Any idea how to fix this?
Thanks
Take a look at the following link. It should provide you with what you're looking for, without using ExternalInterface.call().
http://livedocs.adobe.com/flex/3/html/help.html?content=deep_linking_7.html
As mentioned in the page above, for the BrowserManager class to offer its full functionality, the wrapper must include several supporting files (history.js, amongst others).
More information about how to obtain and use these supporting files can be found in the following link under the "Deploying applications that use deep linking" section.
http://livedocs.adobe.com/flex/3/html/help.html?content=deep_linking_2.html
A quick search reveals you will have to set some extra attributes on the object to make it work in IE. Set id classId and scriptAccess (the last one to 'true' of course) to get this to work. (google for more info)
(Not tested.)
http://www.google.com/search?q=externalinterface+internet+explorer
The solution to the problem that is mentioned in "Edit 3" is basically to create the object tag and its parameter tags using DOM objects, instead of just specifying them as string for the innerHTML attribute. This will make the returned value of the ExternalInterface work in Internet Explorer. Here is an example:
var swfDiv = document.createElement('div');
var obj = document.createElement('object');
obj.setAttribute('id','test1');
obj.setAttribute('codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0');
obj.setAttribute('width','600px');
obj.setAttribute('height','330px');
var param = document.createElement('param');
param.setAttribute('name','movie');
param.setAttribute('value','http://www.website.com/test.swf');
obj.appendChild(param);
param = document.createElement('param');
param.setAttribute('name','allowScriptAccess');
param.setAttribute('value','always');
obj.appendChild(param);
param = document.createElement('param');
param.setAttribute('name','wmode');
param.setAttribute('value','transparent');
obj.appendChild(param);
swfDiv.appendChild(obj);
document.body.appendChild(swfDiv);
document.getElementById('test1').setAttribute('classid','clsid:d27cdb6e-ae6d-11cf-96b8-444553540000');
Note 1: This will make it work with Internet Explorer, any other browser should use any of the method mentioned above in "Edit 3" of the question. You can detect the browser and use the proper code accordingly.
Note 2: the last line is required to make it work properly, and it has to be like that and at the end after adding the object to the document. I do not know why, probably it has to do with the weird browser behavior.
#AAA
Note 2: the last line is required to make it work properly, and it has to be like
that and at the end after adding the object to the document. I do not know
why, probably it has to do with the weird browser behavior.
Thank you very much ! I suppose it is a bug in IE. I wonder how you found out.
Using SWFObject (you'll find it at http://code.google.com/p/swfobject/) to place the Flash on the page also solves this problem in Internet Explorer.

Resources