<!-- 06.26c28v7 Move an Element -->
<script>
window.MoveElementConfig = {
moves: [
{
source: '.ProductItem-additional .video-block',
target: '.sqs-add-to-cart-button',
position: 'after'
}
]
};
</script>
<script>
(function () {
var cfg = window.MoveElementConfig;
if (!cfg || !Array.isArray(cfg.moves) || !cfg.moves.length) return;
var MAX_WAIT = 10000;
var POLL_INTERVAL = 200;
var actions = {
before: function (t, s) { t.before(s); },
after: function (t, s) { t.after(s); },
prepend: function (t, s) { t.prepend(s); },
append: function (t, s) { t.append(s); }
};
function isPlaced(position, source, target) {
switch (position) {
case 'before':
return source.parentElement === target.parentElement && source.nextElementSibling === target;
case 'after':
return source.parentElement === target.parentElement && source.previousElementSibling === target;
case 'prepend':
return source.parentElement === target && target.firstElementChild === source;
case 'append':
return source.parentElement === target && target.lastElementChild === source;
}
return false;
}
function tryMove(move) {
var act = actions[move.position];
if (!act) {
console.warn('[MoveElement] Unknown position:', move.position);
return true;
}
var source = document.querySelector(move.source);
var target = document.querySelector(move.target);
if (!source || !target) return false;
if (source === target || source.contains(target)) return true;
if (isPlaced(move.position, source, target)) return true;
act(target, source);
return true;
}
var observer = null;
var poll = null;
var deadline = 0;
function cleanup() {
if (observer) { observer.disconnect(); observer = null; }
if (poll) { clearInterval(poll); poll = null; }
}
function sweep() {
var allDone = true;
cfg.moves.forEach(function (move) {
if (!tryMove(move)) allDone = false;
});
if (allDone || Date.now() > deadline) cleanup();
}
function start() {
cleanup();
deadline = Date.now() + MAX_WAIT;
var allDone = true;
cfg.moves.forEach(function (move) {
if (!tryMove(move)) allDone = false;
});
if (allDone) return;
observer = new MutationObserver(sweep);
observer.observe(document.documentElement, { childList: true, subtree: true });
poll = setInterval(sweep, POLL_INTERVAL);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', start);
} else {
start();
}
window.addEventListener('load', start);
window.addEventListener('mercury:load', start);
})();
</script>