Skip to content

Commit ed492bc

Browse files
committed
1 parent 76c2682 commit ed492bc

1 file changed

Lines changed: 28 additions & 22 deletions

File tree

src/js/scriptlets/element-picker.js

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*******************************************************************************
22
33
uBlock Origin - a browser extension to block requests.
4-
Copyright (C) 2014-2018 Raymond Hill
4+
Copyright (C) 2014-present Raymond Hill
55
66
This program is free software: you can redistribute it and/or modify
77
it under the terms of the GNU General Public License as published by
@@ -1495,8 +1495,8 @@ var stopPicker = function() {
14951495
var startPicker = function(details) {
14961496
pickerRoot.addEventListener('load', stopPicker);
14971497

1498-
var frameDoc = pickerRoot.contentDocument;
1499-
var parsedDom = (new DOMParser()).parseFromString(
1498+
let frameDoc = pickerRoot.contentDocument;
1499+
let parsedDom = (new DOMParser()).parseFromString(
15001500
details.frameContent,
15011501
'text/html'
15021502
);
@@ -1505,6 +1505,17 @@ var startPicker = function(details) {
15051505
// picker style properties.
15061506
parsedDom.documentElement.id = 'ublock0-epicker';
15071507

1508+
// https://github.com/gorhill/uBlock/issues/2240
1509+
// https://github.com/uBlockOrigin/uBlock-issues/issues/170
1510+
// Remove the already declared inline style tag: we will create a new
1511+
// one based on the removed one, and replace the old one.
1512+
let style = parsedDom.querySelector('style');
1513+
let styleText = style.textContent;
1514+
style.parentNode.removeChild(style);
1515+
style = frameDoc.createElement('style');
1516+
style.textContent = styleText;
1517+
parsedDom.head.appendChild(style);
1518+
15081519
frameDoc.replaceChild(
15091520
frameDoc.adoptNode(parsedDom.documentElement),
15101521
frameDoc.documentElement
@@ -1533,7 +1544,7 @@ var startPicker = function(details) {
15331544
pickerRoot.contentWindow.focus();
15341545

15351546
// Restore net filter union data if it originate from the same URL.
1536-
var eprom = details.eprom || null;
1547+
let eprom = details.eprom || null;
15371548
if ( eprom !== null && eprom.lastNetFilterSession === lastNetFilterSession ) {
15381549
lastNetFilterHostname = eprom.lastNetFilterHostname || '';
15391550
lastNetFilterUnion = eprom.lastNetFilterUnion || '';
@@ -1552,37 +1563,32 @@ var startPicker = function(details) {
15521563
}
15531564

15541565
// No mouse position available, use suggested target
1555-
var target = details.target || '';
1556-
var pos = target.indexOf('\t');
1557-
if ( pos === -1 ) {
1558-
return;
1559-
}
1560-
var srcAttrMap = {
1566+
let target = details.target || '';
1567+
let pos = target.indexOf('\t');
1568+
if ( pos === -1 ) { return; }
1569+
1570+
let srcAttrMap = {
15611571
'a': 'href',
15621572
'audio': 'src',
15631573
'embed': 'src',
15641574
'iframe': 'src',
15651575
'img': 'src',
15661576
'video': 'src',
15671577
};
1568-
var tagName = target.slice(0, pos);
1569-
var url = target.slice(pos + 1);
1570-
var attr = srcAttrMap[tagName];
1578+
let tagName = target.slice(0, pos);
1579+
let url = target.slice(pos + 1);
1580+
let attr = srcAttrMap[tagName];
15711581
if ( attr === undefined ) {
15721582
return;
15731583
}
1574-
var elems = document.querySelectorAll(tagName + '[' + attr + ']');
1575-
var i = elems.length;
1576-
var elem, src;
1584+
let elems = document.querySelectorAll(tagName + '[' + attr + ']');
1585+
let i = elems.length;
1586+
let elem, src;
15771587
while ( i-- ) {
15781588
elem = elems[i];
15791589
src = elem[attr];
1580-
if ( typeof src !== 'string' || src === '' ) {
1581-
continue;
1582-
}
1583-
if ( src !== url ) {
1584-
continue;
1585-
}
1590+
if ( typeof src !== 'string' || src === '' ) { continue; }
1591+
if ( src !== url ) { continue; }
15861592
elem.scrollIntoView({
15871593
behavior: 'smooth',
15881594
block: 'start'

0 commit comments

Comments
 (0)