Переглянути джерело

Fixes unhandled error from history.pushState

j8
hristoterezov 9 роки тому
джерело
коміт
6e34e33b0d
1 змінених файлів з 26 додано та 3 видалено
  1. 26
    3
      app.js

+ 26
- 3
app.js Переглянути файл

24
 
24
 
25
 import UIEvents from './service/UI/UIEvents';
25
 import UIEvents from './service/UI/UIEvents';
26
 
26
 
27
+/**
28
+ * Tries to push history state with the following parameters:
29
+ * 'VideoChat', `Room: ${roomName}`, URL. If fail, prints the error and returns
30
+ * it.
31
+ */
32
+function pushHistoryState(roomName, URL) {
33
+    try {
34
+        window.history.pushState(
35
+            'VideoChat', `Room: ${roomName}`, URL
36
+        );
37
+    } catch (e) {
38
+        console.warn("Push history state failed with parameters:",
39
+            'VideoChat', `Room: ${roomName}`, URL, e);
40
+        return e;
41
+    }
42
+    return null;
43
+}
44
+
27
 /**
45
 /**
28
  * Builds and returns the room name.
46
  * Builds and returns the room name.
29
  */
47
  */
33
     if(!roomName) {
51
     if(!roomName) {
34
         let word = RoomnameGenerator.generateRoomWithoutSeparator();
52
         let word = RoomnameGenerator.generateRoomWithoutSeparator();
35
         roomName = word.toLowerCase();
53
         roomName = word.toLowerCase();
36
-        window.history.pushState(
37
-            'VideoChat', `Room: ${word}`, window.location.pathname + word
38
-        );
54
+        let historyURL = window.location.pathname + word;
55
+        //Trying to push state with URL "/" + roomName
56
+        var err = pushHistoryState(word, historyURL);
57
+        //If URL "/" + roomName is not good, trying with explicitly adding the
58
+        //domain name.
59
+        if(err && config.hosts.domain) {
60
+            pushHistoryState(word, "//" + config.hosts.domain + historyURL);
61
+        }
39
     }
62
     }
40
 
63
 
41
     return roomName;
64
     return roomName;

Завантаження…
Відмінити
Зберегти