+
Common questions and issues
Will there be a configurable whitelist for Nano Defender?
Not until I have a reliable way to synchronously send configuration data to content scripts. This is a limitation of browser APIs.
@@ -76,21 +76,21 @@
Common questions and problems
Nano Defender is causing (further) breakage.
-
Report it and I will try to take care of it within 2 days. Keep in mind that this only apply to breakage caused by Nano Defender, other breakages may not be fixed this fast.
+
Report it and I will try to take care of it within 2 days. Keep in mind that this only apply to breakage caused by Nano Defender, other breakages may not be fixed this fast.
A website freezes with Nano Defender enabled.
Some websites will intentionally freeze (with an infinite loop for example) once they detect Nano Defender, it could also be caused by a bug in Nano Defender.
-
Either way, report it and I will try to take care of it within 2 days. Keep in mind that this only apply to freezings caused by Nano Defender, other freezings may not be fixed this fast.
+
Either way, report it and I will try to take care of it within 2 days. Keep in mind that this only apply to freezings caused by Nano Defender, other freezings may not be fixed this fast.
You can use task manager to terminate the tab that froze, go to Menu -> More tools -> Task manager
, select the tab that froze, then click End process
.
A website is still detecting my adblocker.
-
Nano Defender is not magical, a lot of websites need to be fixed on a case by case basis. Report it and I will have a look. Depending on the website, it can take some time.
+
Nano Defender is not magical, a lot of websites need to be fixed on a case by case basis. Report it and I will have a look. Depending on the website, it can take some time.
A website is perceptibly slower with Nano Defender enabled.
-
Report it and I will have a look.
+
Report it and I will have a look.
@@ -128,7 +128,7 @@
Known issues
crackle.com
-
Video sometimes stuck at loading, refreshing the page usually corrects the problem. Help wanted.
+
Video sometimes stuck at loading, refreshing the page usually corrects the issue. Help wanted.
Geo Lock (United States of America)
Test link 1
@@ -177,10 +177,10 @@
Known issues
uAssets Issues Tracker
-
Reporting a problem
+
+
Reporting an issue
-
Before opening an issue, always check if there is already another issue opened for your problem.
+
Before opening an issue, always check if there is already another issue opened.
For missed ads and tracking scripts, report to EasyList .
For hard anti-adblock (allow ads or leave type) and popups, report to uAssets .
For cookie notices, report to Fanboy .
diff --git a/src/popup/index.html b/src/popup/index.html
index 00f0d3b7e0..4ef06b026e 100644
--- a/src/popup/index.html
+++ b/src/popup/index.html
@@ -33,7 +33,7 @@
Troubleshooting
-
+
@@ -47,11 +47,11 @@
Known Issues
-
+
-
Report Problem
+
Report an Issue
diff --git a/src/popup/index.js b/src/popup/index.js
index 6ca8a8ae81..79ab15f05c 100644
--- a/src/popup/index.js
+++ b/src/popup/index.js
@@ -8,11 +8,11 @@
* Home pages.
* @const {Map}
*/
-const home = new Map([
- ["0", ""],
- ["1", "https://jspenguin2017.github.io/uBlockProtector/"],
- ["2", "https://github.com/jspenguin2017/uBlockProtector"],
-]);
+const home = [
+ "",
+ "https://jspenguin2017.github.io/uBlockProtector/",
+ "https://github.com/jspenguin2017/uBlockProtector",
+];
/**
* On click handler.
@@ -20,7 +20,7 @@ const home = new Map([
* @listens click
*/
const onclick = function () {
- const url = home.get(this.dataset.home) + this.dataset.href;
+ const url = home[this.dataset.home] + this.dataset.href;
chrome.tabs.create({
url: url,
});
diff --git a/src/reporter/index.css b/src/reporter/index.css
new file mode 100644
index 0000000000..7231ef0156
--- /dev/null
+++ b/src/reporter/index.css
@@ -0,0 +1,10 @@
+body {
+ font-size: 100%;
+}
+
+select {
+ border: 0px;
+ font-size: 1.2em;
+ width: 100%;
+ padding: 1px 0px 1px 0px;
+}
diff --git a/src/reporter/index.html b/src/reporter/index.html
new file mode 100644
index 0000000000..8cceab952c
--- /dev/null
+++ b/src/reporter/index.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
Quick Issue Reporter
+
+
+
+
+
+
+
+
+
+
+
Quick Issue Reporter
+
+ The problem:
+
+
+ Choose one...
+ Anti-Adblock
+ Missed Ads
+ False Positive
+ Other (Explain Below)
+
+
+
+ URL where the problem occure:
+
+
+
+
+ Additional details:
+
+
+
+
+ Send
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/reporter/index.js b/src/reporter/index.js
new file mode 100644
index 0000000000..9fa42bc804
--- /dev/null
+++ b/src/reporter/index.js
@@ -0,0 +1,7 @@
+/**
+ * Script for quick issue reporter.
+ */
+"use strict";
+
+window.stop();
+document.body.innerHTML = "This page is still under construction";
diff --git a/src/reporter/paper.css b/src/reporter/paper.css
new file mode 100644
index 0000000000..3fbfe27e37
--- /dev/null
+++ b/src/reporter/paper.css
@@ -0,0 +1,251 @@
+/* Paper stylesheet */
+
+/* General */
+* {
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ font-family: Arial, sans-serif;
+}
+
+body {
+ margin: 0px;
+}
+
+input[type="text"], textarea {
+ width: 100%;
+ margin: 0px;
+ border: none;
+ font-size: 1.2em;
+}
+
+textarea {
+ resize: vertical;
+}
+
+input[type="checkbox"] {
+ width: 20px;
+ height: 20px;
+ margin: 5px;
+ border: 2px solid #808080;
+ background-color: #FFFFFF;
+}
+
+ input[type="checkbox"]:checked {
+ background-color: #3F3F3F;
+ }
+
+ input[type="checkbox"]:focus {
+ outline: none;
+ }
+
+ input[type="checkbox"] ~ label {
+ position: relative;
+ top: -9px;
+ }
+
+@media (min-width: 600px) {
+ h1 {
+ font-size: 3em;
+ }
+
+ h2 {
+ font-size: 2.25em;
+ }
+
+ h3 {
+ font-size: 1.755em;
+ }
+
+ h4 {
+ font-size: 1.5em;
+ }
+
+ h5 {
+ font-size: 1.245em;
+ }
+
+ h6 {
+ font-size: 1.005em;
+ }
+
+ p {
+ font-size: 1.5em;
+ }
+}
+
+/* Basic */
+.hidden {
+ display: none;
+}
+
+.bold {
+ font-weight: bold;
+}
+
+/* Colors */
+.green {
+ color: #FFFFFF;
+ background-color: #009323;
+}
+
+.blue {
+ color: #FFFFFF;
+ background-color: #2463C9;
+}
+
+.red {
+ color: #FFFFFF;
+ background-color: #FF5555;
+}
+
+/* Navigation Bar */
+.navbar {
+ height: 60px;
+ background-color: #F8F8F8;
+}
+
+ .navbar .title {
+ font-weight: bold;
+ font-size: 1.2em;
+ margin: 0px;
+ padding: 19px 2px;
+ color: #5E5E5E;
+ }
+
+ .navbar > .left {
+ margin-left: 10px;
+ float: left;
+ }
+
+ .navbar > .right {
+ margin-right: 10px;
+ float: right;
+ }
+
+ .navbar > .clear {
+ clear: both;
+ }
+
+@media (min-width: 600px) {
+ .navbar > .left {
+ margin-left: 10%;
+ }
+
+ .navbar > .right {
+ margin-right: 10%;
+ }
+}
+
+.navbar button {
+ height: 60px;
+}
+
+/* Buttons */
+button {
+ font-weight: bold;
+ height: 40px;
+ margin: 0px;
+ padding: 0px 15px;
+ border: none;
+ opacity: 0.7;
+}
+
+ button:hover {
+ opacity: 0.85;
+ }
+
+ button:active {
+ opacity: 1;
+ }
+
+ button:focus {
+ outline: none;
+ }
+
+ button.large {
+ font-size: 1.2em;
+ height: 60px;
+ padding-left: 25px;
+ padding-right: 25px;
+ }
+
+/* Containers */
+.container {
+ margin: 20px 0px;
+ padding: 10px;
+ background-color: #EEEEEE;
+}
+
+@media (min-width: 600px) {
+ .container {
+ padding-left: 10%;
+ padding-right: 10%;
+ }
+}
+
+.container.footer {
+ margin: 0px;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ background-color: #FFFFFF;
+}
+
+ .container.footer p {
+ font-size: 0.8em;
+ color: #808080;
+ }
+
+/* Pagination */
+.pagination {
+ text-align: center;
+}
+
+ .pagination button {
+ background-color: #FFFFFF;
+ }
+
+ .pagination button.active {
+ color: #FFFFFF;
+ background-color: #2463C9;
+ opacity: 1;
+ }
+
+/* Table */
+table {
+ width: 100%;
+}
+
+/* Popups */
+.popup-container {
+ display: none;
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.33);
+}
+
+ .popup-container.open {
+ display: block;
+ }
+
+.popup {
+ width: 500px;
+ margin: 40px auto;
+ padding: 25px;
+ background-color: #FFFFFF;
+ opacity: 1;
+}
+
+ .popup h1, .popup h2, .popup h3, .popup h4, .popup h5, .popup h6 {
+ margin: 0px;
+ border-bottom: 1px solid #808080;
+ }
+
+@media (max-width: 599px) {
+ .popup {
+ width: 80%;
+ }
+}
diff --git a/src/reporter/paper.js b/src/reporter/paper.js
new file mode 100644
index 0000000000..5ff01abfb7
--- /dev/null
+++ b/src/reporter/paper.js
@@ -0,0 +1,53 @@
+/**
+ * Paper library.
+ */
+"use strict";
+
+/**
+ * Toggle wait screen.
+ * @function
+ */
+const wait = (() => {
+ const $popup = document.getElementById("paper-wait");
+
+ let state = false;
+ return () => {
+ if (state) {
+ $popup.classList.remove("open");
+ } else {
+ $popup.classList.add("open");
+ }
+
+ state = !state;
+ };
+})();
+
+/**
+ * Send a POST request to the standard API endpoint.
+ * @async @function
+ * @param {string} payload - The payload to send.
+ * @return {string} The response text when successful.
+ * @throws {XMLHttpRequest} The XMLHttpRequest instance when not successful.
+ */
+const post = (payload) => {
+ return new Promise((resolve, reject) => {
+ wait();
+
+ let req = new XMLHttpRequest();
+
+ req.onreadystatechange = () => {
+ if (req.readyState === 4) {
+ wait();
+
+ if (req.status === 200) {
+ resolve(req.responseText);
+ } else {
+ reject(req);
+ }
+ }
+ };
+
+ req.open("POST", "Report.php");
+ req.send(payload);
+ });
+};