关于window.open() 和 frame 的一些用法

本文介绍了一种通过修改window.open()函数来隐藏URL中敏感参数的方法。通过使用表单提交代替直接在URL中传递参数的方式,可以有效避免敏感信息泄露。

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

最近客户提出来,打开的窗口含有参数列,也就是能够看都一些信息的id等。
所以修改了window.open() 和 frame 的写法。
1.window.open()

原来的写法是

window.open("/someAction.do?action=dosth&fileId=${id}&type=1","somewindow","toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable=yes,width=100,height=200")

修改后增加了一个 form

<form name="someForm" method="post">
<input type="hidden" name="action">
<input type="hidden" name="fileId" value="${id}">
</form>

新的js写法为

var somewindow=window.open("","somewindow","toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable=yes,width=100,height=200")
getSingleElement('someForm').action.value='dosth';
getSingleElement('someForm').target='somewindow'; // target is important
getSingleElement('someForm').submit();

这样就看不到关键信息了
### 如何在 iOS 环境中使用 `window.open` 方法 在 iOS 开发环境中,特别是当涉及到 WebView 或者 WKWebView 中执行 JavaScript 的场景时,`window.open` 行为可能会有所不同。为了确保该方法能够正常工作并打开新的窗口或标签页,开发者需要注意一些特定配置。 对于基于 WebKit 构建的应用程序组件而言,在默认情况下可能不会支持 `window.open` 调用创建新页面的行为。如果希望启用此功能,则需调整应用设置以允许弹出窗口[^1]。 具体实现方式取决于所使用的框架: #### 使用 UIWebView (已弃用) 尽管苹果已经推荐不再使用 UIWebView,但在某些旧项目里仍然可能存在这种需求。可以通过修应用程序的安全策略来尝试解决这个问题,不过更建议迁移到现代替代方案上。 #### 推荐做法:采用 WKWebView WKWebView 提供了一个更加现代化且性能更好的 API 来加载网页内容,并且提供了更多控制选项给开发人员处理类似 `window.open` 这样的请求。要使 `window.open` 正确运行于 WKWebView 内部,可以按照如下方式进行设置: ```swift import UIKit import WebKit class ViewController: UIViewController, WKUIDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() let webConfiguration = WKWebViewConfiguration() // 设置允许弹窗行为 webConfiguration.preferences.javaScriptCanOpenWindowsAutomatically = true webView = WKWebView(frame: .zero, configuration: webConfiguration) webView.uiDelegate = self view.addSubview(webView) // 加载目标 URL... } } ``` 通过上述 Swift 代码片段展示了如何初始化一个带有适当配置项的 WKWebView 实例,从而让其内部调用 `window.open()` 可以成功触发新开窗口的动作[^4]。 值得注意的是,由于安全原因以及用户体验考虑,iOS 平台对多窗口的支持有限制;因此实际效果会受到设备操作系统版本及其他因素的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值