應熱情粉絲的殷切期待,我決定從百忙之中抽出時間來完成這篇博文。(開玩笑啦)
我也是近期才接觸到這種引用js的辦法。例如,有這樣一段js代碼
<script src='http://ww.***.com/m.php?u=http://m.mumayi.com&d=http://down.***.com/a/101&i=http://m.***.com' language='JavaScript' charset='utf8'></script>
下面是這段js引用的m.php的內容:
header('Content-Type:text/html;charset=utf-8'); $url = injectCheck(strip_tags(($_GET['u'])));//JS需要跳到的頁面,例如:http://m.mumayi.com $download = injectCheck(strip_tags(($_GET['d'])));//推廣版電子市場下載地址,例如:http://down.mumayi.com/a/101 $iurl = injectCheck(strip_tags(($_GET['i'])));//JS需要跳到的頁面,例如:http://m.mumayi.com if($url){ //$url = "window.open('".$url."')"; $url = 'window.location.href="'.$url.'"'; }else{ $url = 'window.location.href="http://m.mumayi.com/?yidongtuiguang"'; } if($iurl){ $iurl = 'window.location.href="'.$iurl.'"'; }else{ $iurl = 'window.location.href="http://m.mumayi.com/?yidongtuiguang_ios"'; } echo 'if((/AppleWebKit.*mobile/i.test(window.navigator.userAgent.toLowerCase())) || (/android/i.test(navigator.userAgent.toLowerCase())) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(window.navigator.userAgent.toLowerCase()))){ if(window.location.href.indexOf("?mobile")<0){ //iphone手機與ipad if(/iphone/i.test(navigator.userAgent.toLowerCase())){'; echo $iurl; echo '}else if(/ipad/i.test(navigator.userAgent.toLowerCase())){'; echo $iurl; echo '}else if(/android/i.test(navigator.userAgent.toLowerCase())){'; //如果提供了下載地址,則會直接下載 if($download){ echo 'var download="'.$download.'"; alert("系統檢測到你還沒有安裝木螞蟻安卓市場,點擊確定下載木螞蟻安卓市場,十萬款免費破解版應用和游戲高速下載,並且還可以獲取金蛋,賺話費兌換禮品哦~ ");window.open(self.download,\'_top\');'; } echo $url; echo '}else {'; echo $url; echo '}'; echo '}'; echo '}'; function injectCheck($data,$ignore_magic_quotes=false) { if(is_string($data)) { $data=trim(htmlspecialchars($data));//防止被掛馬,跨站攻擊 if(($ignore_magic_quotes==true)||(!get_magic_quotes_gpc())) { $data = addslashes($data);//防止sql注入 } return $data; } else if(is_array($data))//如果是數組采用遞歸過濾 { foreach($data as $key=>$value) { $data[$key]= injectCheck($value); } return $data; } else { return $data; } }
認真看的朋友可能已經發現,雖然<script>標簽中引用的地址指向m.php,但是這個php文件的輸出,實際上是一段js代碼,所以能起到引用js代碼的作用。
但是為什么不直接使用JS,而要用PHP來輸出呢?這個例子里是為了方便獲取參數。
至於獲取參數,如果傳遞的url參數本身還帶參數的話,可以將參數urlencode,然后再傳遞就像這樣:
<script src='http://ww.mumayi.com/w.php?u=http://m.mumayi.com?seo&i=http%3A%2F%2Fm.hao123.com%2F%3Funion%3D1%26from%3D1013239a%26tn%3Dops1013239a%26qq-pf-to%3Dpcqq.discussion' language='JavaScript' charset='utf8'></script>
這樣參數i后面的一大段帶參數的url就可以被作為一個整體啦。
其實JS自身也可以獲取參數,可能稍微麻煩一點。總之,這種JS可以跟服務器有更好的交互。在實際工作中也是用得上的。