【发布时间】:2010-02-24 00:02:30
【问题描述】:
我有一个 web 应用程序,其中有 javscript 散布在页面中。发生的情况是 safari 将转储 javascript 代码的源而不是执行它。我可以始终如一地重现这一点。
页面是不同形式内容的混搭:
它使用 osflv 加载 Flash 视频,并通过服务器端的 php 脚本生成。此外,该页面还包含对 Google Map 的 API 的调用以显示地图。使用 javascript 将内容放置在单独的选项卡中以提供选项卡交互。
我也在使用 mootools,但不确定这是否会导致问题。
以下是 javascript 包括:
<script type="text/javascript" src="/js/mootools-1.2.1-core.js"></script>
<script type="text/javascript" src="/js/mootools-1.2-more.js"></script>
<script type="text/javascript" src="/js/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript" src="/js/sifr.js"></script>
<script type="text/javascript" src="/js/sifr-debug.js"></script>
<script type="text/javascript" src="/js/common.js"></script>
<script type="text/javascript" src="/js/alerts.js"></script>
<script type="text/javascript" src="/js/swfobject.js"></script>
<script type="text/javascript" src="/js/autocompleter.js"></script>
<script type="text/javascript" src="/js/observer.js"></script>
<script charset='ISO-8859-1' src='/js/rac.js' language='javascript'></script>
rac.js 来自 osflv,common.js 和 alerts.js 是自定义 javascript 代码,其中包括用于在页面中显示或操作数据的自定义类和函数。
这段代码在页面中执行得很好:
<script type="text/javascript">
var whitney = { src: '/flash/whitney.swf'};
sIFR.activate(whitney);
sIFR.replace(whitney, { selector: 'h6#propertyHeadline', wmode:'transparent',css: {'.sIFR-root': {'color': '#1ca9b9' }}});
</script>
这段代码也执行得很好:
<script language='javascript'>
var src = '/player';
if(!DetectFlashVer(9, 0, 0) && DetectFlashVer(8, 0, 0))
src = 'player8';
AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', 520, 'height', 440, 'src', src, 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'id', 'flvPlayer', 'allowFullScreen', 'true', 'movie', src, 'FlashVars','movie=media/orig/4b845109d99d0.flv&fgcolor=0x1CA9B9&bgcolor=0x000000&autoload=off&volume=70');
</script>
这是在html中嵌入到body标签末尾之前的页面底部的最终sn-p代码,Safari会在浏览器中的任何位置随机吐出src代码在好的地图之外脚本包括:
<script src="http://maps.google.com/maps?file=api&v=2&key=googlemapsapikeyblockedout" type="text/javascript"></script>
<script type="application/javascript">
function InitPropertyDashboardTabs(){
mytabs = new TabPanel('DashboardTabPanel');
initializeGallery();
initializeSiteplan();
initializeMap('address blocked out');
}
var map = null;
var geocoder = null;
function initializeSiteplan()
{
var flashvars = {PropertyId:1,BasePath:'/',wmode:'transparent'};
var params = {wmode: 'transparent'};
var attributes = {id: 'SWFSitePlan',name: 'SWFSitePlan'};
swfobject.embedSWF("/flash/FloorplanViewer/FloorplanViewer.swf", "SiteplanFlash", "915", "500", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
}
function initializeGallery()
{
var params = {wmode: 'transparent'};..... (more code)
这是带有 js 转储的页面
(来源:oxid8.com)
页面应该是这样的:
(来源:oxid8.com)
【问题讨论】:
-
你能指出一个示例页面吗?在其他浏览器中是什么结果?
-
对解决方案感兴趣。我们不时在使用 TinyMCE 的页面上遇到同样的问题。
-
不幸的是,它是一个防火墙后面的网络应用程序,所以我不能只指向一个公共 URL。让我尝试在帖子中添加更多细节
-
@jasonbar:您是否也像 Mike 一样在使用 Flash 的页面上遇到这个问题?还是只有TinyMCE?您能否在有此问题的页面某处发布链接或源代码?
-
@Marcel Korpel:它只发生在带有 TinyMCE 的页面上(并且只有当我们有多个实例时。)我可以将页面源代码放在 pastebin 但是当我在 Safari 中查看源代码时,打印的javascript代码不存在!有没有办法查看当前渲染的源代码?
标签: javascript flash safari mootools