現象
代碼在 Chrome 正常彈窗並請求,但在 MyEclipse 內置瀏覽器無反應。
根因分析
- 同源策略攔截:請求 `https://www.gdlottery.cn/...` 屬於跨域,MyEclipse 內置瀏覽器(基於 IE 內核或舊版 WebKit)默認阻止跨域 AJAX,且不支持 CORS 預檢。
- 彈窗攔截:內置瀏覽器可能攔截 `window.open` 或 `alert`。
- jQuery 版本兼容:舊內核不支持 `fetch`/`Promise`,需引入 Polyfill。
解決方案
- 以真實瀏覽器為準:內置瀏覽器僅供預覽佈局,**所有功能測試必須在 Chrome/Firefox/Edge 進行**。
- 配置代理解決跨域(開發期):在 `web.xml` 或 Spring MVC 配置 `ProxyServlet`,將 `/api/*` 轉發到目標域名。
- 生產環境:後端配置 `Access-Control-Allow-Origin` 或部署在同域下。
代碼健壯性建議
$.ajax({
url: "https://www.gdlottery.cn/ref_cont.jspx",
type: "POST",
dataType: "jsonp", // 若對方支持 JSONP
success: function(data) { $("#id").html(data); },
error: function(xhr, status, err) { console.error(status, err); }
});
JavaScript 跨域 AJAX MyEclipse 內置瀏覽器失效,同源策略攔截,開發期代理配置,生產環境 CORS 方案。