本文目錄一覽:
- 1、如何處理前端js跨域問題
- 2、怎樣用JS實現文件下載功能,求函數,代碼
- 3、javascript 跨域調用js文件問題…..
- 4、js下載文件
- 5、如何用js實現點擊按鈕下載文件
- 6、怎樣解決js讀取xml文件跨域問題
如何處理前端js跨域問題
前端跨域的解決方法非常的多,簡單的給你介紹一下吧。
iframe解決跨域,這種方法也比較常見
JSONP解決跨域,簡單,易上手
postMessage解決跨域,使用了比較新H5 API,所以存在一定的兼容問題;
伺服器代由訪問,方法對前端影響不大,但是後台相對會麻煩很多。
希望對您有幫助吧~~
怎樣用JS實現文件下載功能,求函數,代碼
其實很簡單, 在這個方法裡面, 只要使用頁面跳轉, 將url指向文件地址, IE就會實現下載了
例如下載Upload 文件夾下的XX.doc,注意路徑要對
function download()
{
location.href=”../Upload/XX.doc”;
}
javascript 跨域調用js文件問題…..
三種方法實現js跨域訪問
1.基於iframe實現跨域
基於iframe實現的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬於一個基礎域(例如都是xxx.com,或是xxx.com.cn),使用同一協議(例如都是 http)和同一埠(例如都是80),這樣在兩個頁面中同時添加document.domain,就可以實現父頁面調用子頁面的函數,代碼如下:
頁面一代碼:
html
head
script
document.domain = “xx.com”;
function aa(){
alert(“p”);
}
/script
/head
body
iframe src=”” id=”i”
/iframe
script
document.getelementbyid(‘i’).oncg = function(){
var d = document.getelementbyid(‘i’).contentwindow;
d.a();
};
/script
/body
/html
頁面二代碼:
html
head
script
document.domain = “xx.com”;
function a(){
alert(“c”);
}
/script
/head
body
/body
/html
這時候父頁面就可以調用子頁面的a函數,實現js跨域訪問
2.基於script標籤實現跨域
script標籤本身就可以訪問其它域的資源,不受瀏覽器同源策略的限制,可以通過在頁面動態創建script標籤,代碼如下
var script = document.createElement(‘script’);
script.src = “*.js”;
document.body.appendChild(script);
這樣通過動態創建script標籤就可以載入其它域的js文件,然後通過本頁面就可以調用載入後js文件的函數,這樣做的缺陷就是不能載入其它域的文檔,只能是js文件,jsonp便是通過這種方式實現的,jsonp通過向其它域傳入一個callback參數,通過其他域的後台將callback參數值和json串包裝成javascript函數返回,因為是通過script標籤發出的請求,瀏覽器會將返回來的字元串按照javascript進行解析執行,實現了域與域之間的數據傳輸。
jquery中對jsonp的支持也是基於此方案
3.後台代理方式
這種方式可以解決所有跨域問題,也就是將後台作為代理,每次對其它域的請求轉交給本域的後台,本域的後台通過模擬http請求去訪問其它域,再將返回的結果返回給前台,這樣做的好處是,無論訪問的是文檔,還是js文件都可以實現跨域
js下載文件
代碼如下:
html
head
meta http-equiv=”Content-Type” content=”text/html; charset=gbk” /
titleJS實現下載文件/title
script language=JavaScript
function download(obj){
if(document.all.ifrm==null){
objIframe=document.createElement(“IFRAME”);
document.body.insertBefore(objIframe);
objIframe.outerHTML=”iframe name=ifrm style=’width:0;hieght:0′ src=”+obj.href+”/iframe”;
re=setTimeout(“download()”,1)
}
else{
clearTimeout(re)
files=window.open(obj.href,”ifrm”)
files.document.execCommand(“SaveAs”)
document.all.ifrm.removeNode(true)
}}
/script
/head
body
文檔列表:請點出下載br/
a href=”file01.doc” id=”filelist” onclick=”download();return false;” style=”cursor:hand”文件1/a br/
a href=”file02.pdf” id=”filelist” onclick=”download();return false;” style=”cursor:hand”文件2/a
/body
/html
如何用js實現點擊按鈕下載文件
在按鈕上寫屬性 onclick=”函數名()” ,作用是綁定click事件
如
input type=”button” onclick=”Click()” value=”Download” /
然後在腳本處寫上對應的函數即可,在函數中跳轉到相應的文件路徑就行。如
function Click(){
window.location.href=”文件的url地址”;
}
怎樣解決js讀取xml文件跨域問題
js讀取xml文件跨域 問題,可以使用以下幾種方法:
1 通過jsonp跨域 : 在js中,我們直接用XMLHttpRequest請求不同域上的數據時,是不可以的。但是,在頁面上引入不同域上的js腳本文件卻是可以的,jsonp正是利用這個特性來實現的。代碼如下:
2 通過修改document.domain來跨子域:有一個頁面,它的地址是 , 在這個頁面裡面有一個iframe,它的src是, 很顯然,這個頁面與它裡面的iframe框架是不同域的 ;document.domain就可以派上用場了,我們只要把 和 這兩個頁面的document.domain都設成相同的域名就可以了
3 使用window.name來進行跨域 : 每個頁面對window.name都有讀寫的許可權,window.name是持久存在一個窗口載入過的所有頁面
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151735.html