有两个html文件,一个index.html
和inner.html
。
** index.html **
<html>
<body>
<script src="./node_modules/jquery/dist/jquery.js"></script>
<iframe src="./inner.html" frameborder="1"></iframe>
</body>
</html>
它引用了jquery。
** inner.html **
<html>
<body>
<input type="button" id="button" value="Get Data by AJAX">
<script src="./inner.js"></script>
</body>
</html>
** inner.js **
const $ = window.top.$
$('#button', window.document).click(function () {
$.ajax({
url: '/data.json',
success: function (data) {
console.log(data)
},
context: this
})
})
在服务器端,我将打印标题referer
。
打开index.html的网址是:http://localhost:3000
。
我发现,当我使用$
中的window.top
在inner.html中发出ajax请求时,服务器中打印的referer
是http://localhost:3000
,它是URL外页。
我希望是iframe的网址,http://localhost:3000/inner.html
,但是如果我坚持使用window.top
的jquery,就找不到办法。
PS:如果我将代码<script src="./node_modules/jquery/dist/jquery.js"></script>
从index.html
移到inner.html
,并使用window.$
在inner.html中发送ajax请求,则引用是我所期望的:http://localhost:3000/inner.html
这是我项目的简化演示,其中我们必须使用平台提供的jquery,window.top.$