使下载链接在卸载前不触发

时间:2019-02-13 03:35:09

标签: javascript html download anchor onbeforeunload

我有一个应用程序,用户可以在其中输入大量信息。因此,使用beforeunload事件很重要,这样用户才不会意外离开页面并失去进度。但是,该应用程序还需要下载链接,问题是,即使下载 not 不会导致用户离开页面,点击这些下载链接也会触发beforeunload事件。

我该如何进行设置,以便用户必须在离开页面之前进行确认,但是通过单击下载链接不是触发此确认?

您可以在此处的可复制示例中看到整个内容:

2 个答案:

答案 0 :(得分:2)

这是一种黑客行为,但我认为这可以防止beforeunload事件在您的下载链接上触发:

<a href="somefile.txt" download target="_blank">Download</a>

基本上,将download属性添加到元素中,并添加target属性。

答案 1 :(得分:-1)

您可以在func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { let urlHost : String = url.host as String! let mainStoryboard: UIStoryboard = UIStoryboard(name: "BLE", bundle: nil) if(urlHost == "BLELoginViewController") { let innerPage: BLELoginViewController = mainStoryboard.instantiateViewController(withIdentifier: "BLELoginViewController") as! BLELoginViewController self.window?.rootViewController = innerPage } return true } class TodayViewController: UIViewController, NCWidgetProviding { override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(_ animated: Bool) { } func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { // Perform any setup necessary in order to update the view. // If an error is encountered, use NCUpdateResult.Failed // If there's no update required, use NCUpdateResult.NoData // If there's an update, use NCUpdateResult.NewData completionHandler(NCUpdateResult.newData) } @IBAction func extensionAction(_ sender: Any) { let url: NSURL = NSURL(string: "UEM://BLELoginViewController")! self.extensionContext?.open(url as URL, completionHandler: nil) } } 和/或required元素上使用<input>属性,以防止<textarea>提交,直到<form>字段完成。

请参见