代码改变世界

【备忘】一段用于在论坛上插入Flash内容的JavaScript代码

2011-01-01 13:42  Nana's Lich  阅读(387)  评论(0编辑  收藏  举报

这是我去年年初给我的一个朋友写的,不过后来因为种种原因没有利用上。

时间相隔了近一年,也不记得会不会有什么细节问题了,先bia上再说。

str = str.replace(/\[flash([=\s][^\]]+)?\](.+?)\[\/flash\]/ig, function ($0, $1, $2) {
  var args = $1.split(/\s+/), u = args.shift() || $2, t = $2 || u;
  if (u.charAt(0) == '=') u = u.substr(1);
  if (u.substr(0, 7).toLowerCase() != 'http://') { u = 'http://' + u }
  if (self.checklink(u, 1) == 1 && self.videonum < 1) {
    var w = 425, h = 350, mach = /^(\S+\.swf)(\?\S*)?$/i.exec(u), qs = mach[2], prms = {};
    if (qs) u = mach[1], prms.FlashVars = qs.substr(1);
    if (u.indexOf('pl.bilibili.us') != -1) {
      w = 540; h = 450;
    }
    self.videonum++;

    if (window.ActiveXObject) {
      prms.movie = u, u = "";
      for (var n in prms)
        u += ('<param name="' + n + '" value="' + prms[n] + '" />');
      return ('<object class="video" width="' + w + 'px" height="' + h + 'px" alt="' + t + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">' + u + '</object>');
    } else {
      prms.src = u, u = "";
      for (var n in prms)
        u += (n + '="' + prms[n] + '" ');
      return ('<embed class="video" width="' + w + 'px" height="' + h + 'px" alt="' + t + '" type="application/x-shockwave-flash" ' + u + '/>');
    }
  } else {
    return ("<a href='" + u + "' target='_blank'>" + t + "</a>");
  }
});