继续修改去~
当鼠标放到FLASH幻灯片上时,就会在Flsh周围出现一个虚框,并提示你单击激活控件,激活后才能交互,才能点图片,个人空间用到FLASH特效的也是,很不爽,前几天网上查了资料修改了,安装新模板后还没来得及改.
(已修改)
找了好多,Flash都是通过脚本来写入的,要修改就要在每个插入FLASH的地方都改代码,工程很大而且有些容易出错,比如影音播放器.
在GOOGLE进行大海捞针似的搜索,终于找到了简便有效的方法~搽汗中..
解决方法:
打开include/js/ajax.js文件,在最后面加上以下代码:
- var ie = (document.defaultCharset && document.getElementById && !window.home);
- var opera9 = false;
- if (ie){
- //Check for ie 5.5 and exclude it from the script
- var ver=navigator.appVersion.split("MSIE")
- ver=parseFloat(ver[1])
- ie = (ver >=6)
- }else if (navigator.userAgent.indexOf("Opera")!=-1) {
- //Check for Opera9 and include it in the ObjectSwap
- var versionindex=navigator.userAgent.indexOf("Opera")+6
- if (parseInt(navigator.userAgent.charAt(versionindex))>=9)
- opera9 = true;
- }
- //Perform ObjectSwap if the browser is IE or Opera (if not just check flashVersion)
- var oswap = (ie || opera9)
- //Hide the object to prevent it from loading twice
- if (oswap){
- document.write ("<style id='hideObject'> object{display:none;} </style>");
- }
- /*Replace all flash objects on the page with the same flash object,
- by rewriting the outerHTML values
- This bypasses the new IE ActiveX object activation issue*/
- objectSwap = function(){
- if (!document.getElementsByTagName){
- return;
- }
- //An array of ids for flash detection
- var stripQueue = [];
- //Get a list of all ActiveX objects
- var objects = document.getElementsByTagName('object');
- for (var i=0; i<objects.length; i++){
- var o = objects[i];
- var h = o.outerHTML;
- //The outer html omits the param tags, so we must retrieve and insert these separately
- var params = "";
- var hasFlash = true;
- for (var j = 0; j<o.childNodes.length; j++) {
- var p = o.childNodes[j];
- if (p.tagName == "PARAM"){
- //Check for version first - applies to all browsers
- //For this to work, a new param needs to be included in the object with the name "flashVersion" eg:
- //<param name="flashVersion" value="7" />
- if (p.name == "flashVersion"){
- hasFlash = detectFlash(p.value);
- if (!hasFlash){
- //Add the objects id to the list (create a new id if there's isn't one already)
- o.id = (o.id == "") ? ("stripFlash"+i) : o.id;
- stripQueue.push(o.id);
- break;
- }
- }
- params += p.outerHTML;
- }
- }
- if (!hasFlash){
- continue;
- }
- //Only target internet explorer
- if (!oswap){
- continue;
- }
- //Avoid specified objects, marked with a "noswap" classname
- if (o.className.toLowerCase().indexOf ("noswap") != -1){
- continue;
- }
- //Get the tag and attributes part of the outer html of the object
- var tag = h.split(">")[0] + ">";
- //Add up the various bits that comprise the object:
- //The tag with the attributes, the params and it's inner html
- var newObject = tag + params + o.innerHTML + " </OBJECT>";
- //And rewrite the outer html of the tag
- o.outerHTML = newObject;
- }
- //Strip flash objects
- if (stripQueue.length) {
- stripFlash(stripQueue)
- }
- //Make the objects visible again
- if (oswap){
- document.getElementById("hideObject").disabled = true;
- }
- }
- detectFlash = function(version){
- if(navigator.plugins && navigator.plugins.length){
- //Non-IE flash detection.
- var plugin = navigator.plugins["Shockwave Flash"];
- if (plugin == undefined){
- return false;
- }
- var ver = navigator.plugins["Shockwave Flash"].description.split(" ")[2];
- return (Number(ver) >= Number(version))
- } else if (ie && typeof (ActiveXObject) == "function"){
- //IE flash detection.
- try{
- var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + version);
- return true;
- }
- catch(e){
- return false;
- }
- }
- //Catchall - skip detection
- return true;
- }
- //Loop through an array of ids to strip
- //Replace the object by a div tag containing the same innerHTML.
- //To display an alternative image, message for the user or a link to the flash installation page, place it inside the object tag.
- //For the usual object/embed pairs it needs to be enclosed in comments to hide from gecko based browsers.
- stripFlash = function (stripQueue){
- if (!document.createElement){
- return;
- }
- for (var i=0; i<stripQueue.length; i++){
- var o = document.getElementById(stripQueue[i]);
- var newHTML = o.innerHTML;
- //Strip the comments
- newHTML = newHTML.replace(/<!--\s/g, "");
- newHTML = newHTML.replace(/\s-->/g, "");
- //Neutralise the embed tag
- newHTML = newHTML.replace(/<embed/gi, "<span");
- //Create a new div element with properties from the object
- var d = document.createElement("div");
- d.innerHTML = newHTML;
- d.className = o.className;
- d.id = o.id;
- //And swap the object with the new div
- o.parentNode.replaceChild(d, o);
- }
- }
- //Initiate the function without conflicting with the window.onload event of any preceding scripts
- var tempFunc = window.onload;
- window.onload = function(){
- if (typeof (tempFunc) == "function"){
- try{
- tempFunc();
- } catch(e){}
- }
- objectSwap();
- }
复制代码
保存,刷新后看看是不是不需要激活了~首页,个人空间等同时解决.同样这个脚本也可以用到其他地方,比如论坛LOGO是FLASH的,把上面的代码保存为**.JS文件,在需要的地方插入<script src="**.js" type="text/javascript" language="javascript"></script>
[ 本帖最后由 kele9988 于 2007-7-2 04:35 编辑 ] |