support for wrapping text in a span (for later use)
parent
f445dcb0be
commit
a69abb5b2f
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* SPDX-FileCopyrightText: 2024 Sascha Nitsch (grumpydeveloper) https://contentnation.net/@grumpydevelop
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* @author Sascha Nitsch (grumpydeveloper)
|
||||||
|
**/
|
||||||
|
|
||||||
|
namespace ScriptedBrowser\Commands;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wrap given element in a <span id="">
|
||||||
|
*
|
||||||
|
* @param \ScriptedBrowser\Main $main main instance
|
||||||
|
* @param \ScriptedBrowser\Control $control control interface
|
||||||
|
* @unused-param $control
|
||||||
|
* @param array<string,mixed> $options options
|
||||||
|
* @return bool true on success
|
||||||
|
*/
|
||||||
|
function spanwrap($main, $control, $options)
|
||||||
|
{
|
||||||
|
$start = $options['start'];
|
||||||
|
$end = $options['end'];
|
||||||
|
$query = $options['parameter'];
|
||||||
|
$id = $options['id'];
|
||||||
|
|
||||||
|
$js = '
|
||||||
|
const start = ' . $start .';
|
||||||
|
const end = ' . $end .';
|
||||||
|
const node = document.querySelector("' . $query . '");
|
||||||
|
const text = node.innerHTML;
|
||||||
|
const frontText = (start !== 0) ? text.substring(0, start) : \'\';
|
||||||
|
const middleText = text.substring(start, end !== 0 ? end : undefined);
|
||||||
|
const endText = end !== 0 ? text.substring(end) : \'\';
|
||||||
|
let finalText = frontText + \'<span data-id="' . $id . '">\';
|
||||||
|
finalText += middleText + \'</span>\' + endText;
|
||||||
|
node.innerHTML = finalText;
|
||||||
|
';
|
||||||
|
$control->executeScript($js);
|
||||||
|
$e = $control->selectCSS(('span[data-id="'. $id .'"]'));
|
||||||
|
$element = array_values($e)[0];
|
||||||
|
$r = $control->getElementRect($element);
|
||||||
|
$main->setVar($id . '_x', $r['x']);
|
||||||
|
$main->setVar($id . '_y', $r['y']);
|
||||||
|
$main->setVar($id . '_width', $r['width']);
|
||||||
|
$main->setVar($id . '_height', $r['height']);
|
||||||
|
return true;
|
||||||
|
}
|
Loading…
Reference in New Issue