iframe标签重新加载和刷新、js cookie使用

本文介绍了一种通过iframe实现页面内容切换并支持语言国际化的解决方案。利用cookie共享变量实现不同网页间的变量传递,并通过重新加载iframe的方式更新显示内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:

由于需要国际化,也就是中英文切换,采用的iframe标签,那么问题来了,如何在点击首页更新iframe标签的内容?

要解决这个问题:

  • 1、怎么让iframe知道主页修改内容(也就是不同网页变量共享)?
  • 2、修改内容后如何重新加载iframe标签内容?

1、对于第一个问题:采用最笨办法cookie共享变量

设置cookie变量值

document.cookie="languages=zh"; 

获取cookie变量值

languages=document.cookie.split("=")[1].split(";")[0]; (以"=",";"进行切割获取zh)

2、对于第二个问题:

html部分

<iframe id="ifrmname" name="ifrmname"
					src="./wizard.html"
					frameborder="0" width="100%" height="600px"> </iframe>

js部分,注意 ifrmname是name属性的值

window.open(document.all.ifrmname.src,'ifrmname','')	

贴出部分代码:

var languages = $.i18n.browserLang();
loadProperties(languages);  
function loadProperties(languages) {  
	languages=document.cookie.split("=")[1].split(";")[0];
	$.i18n.properties({  
		name:'strings',  
		path:'../i18n/',  
		mode:'map',  
		language:languages,  
		callback:function(){  
			$("[data-locale]").each(function(){  
				$(this).html($.i18n.prop($(this).data("locale")));  

			});  
		}  
	});  
}  	

默认是浏览器确定显示语言,默认会去浏览器获取是否设置语言。


在Vue应用中使用iframe预览PDF文件时,如果PDF位于另一个域名下,可能会遇到跨域限制。为了处理这个问题,你需要配置服务器端允许该URL访问,或者在浏览器端采取一些技巧来解决跨域。 1. **服务器端设置**: - 如果你有控制服务器权限,可以在服务器上设置CORS(Cross-Origin Resource Sharing),即通过HTTP响应头`Access-Control-Allow-Origin`指定允许哪些源访问资源。 ```javascript // Node.js express示例 res.setHeader('Access-Control-Allow-Origin', 'http://yourdomain.com'); ``` 2. **JSONP(JSON with Padding)**: 使用JSONP可以在浏览器支持同源策略的情况下从其他域请求数据,不过这种方法适用于GET请求。将PDF内容作为JSON返回,并包装在一个函数调用内。 3. ** CORS Preflight 请求(OPTIONS)**: 对于POST、PUT等请求,通常需要先发送一个`OPTIONS`请求来检查是否允许跨域。可以在这个请求中返回`Access-Control-Allow-Methods``Access-Control-Allow-Headers`。 4. **vue-cli创建的项目**: 在`main.js`或其他合适的中间件文件中添加CORS处理。例如,如果你使用axios库,可以配置全局代理: ```javascript import axios from 'axios'; axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; // 这行很重要 const instance = axios.create({ baseURL: process.env.VUE_APP_API_URL, withCredentials: true, // 是否带cookie transformRequest: [function (data) { // 对请求数据做转换 }], transformResponse: [function (data) { // 对响应数据做转换 }], headers: {'Content-Type': 'application/json' /*默认值*/} }); window.axios = instance; ``` 记得测试跨域设置是否生效,因为某些浏览器在初次加载时会缓存错误状态,刷新页面或清除缓存可能会看到效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值