国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Führen Sie JS-Funktionen aus, wenn das Dokument geladen wird und wenn auf ein Element geklickt wird
P粉777458787
P粉777458787 2023-09-15 14:26:54
0
1
773

Ich versuche, ein Tampermonkey-Skript zu schreiben, um eine von mir verwendete Gesch?fts-Webanwendung zu erweitern. Im Grunde genommen erscheint eine URL auf der Seite und ich muss eine Zahl aus der URL extrahieren und diese Zahl dann verwenden, um einen neuen Link zu erstellen und ihn an das übergeordnete Element anzuh?ngen.

Ich habe das bisher, aber es funktioniert nicht, wenn ich auf das Element klicke (Paginierung ist nur UL) oder wenn das Dokument geladen wird. Ich wei?, dass die Funktion so funktioniert, als ob ich sie so einstellen würde, dass sie ausgeführt wird, wenn ich auf eine beliebige Stelle im Dokument klicke. Wenn JS meldet, dass eine Seite geladen wurde, ist es fast so, als w?re die Seite noch nicht vollst?ndig geladen.

(function() {
    'use strict';

    //get the pagination element
    var element = document.getElementsByClassName('pagination-sm');
    element.onclick = createLinks;
    document.onload = createLinks;

    function createLinks() {
    var links = document.querySelectorAll ("a[href*='/Field/POPendingCreate/']");

        for (var J = links.length-1; J >= 0; --J) {
            var thisLink = links[J];
            console.log(thisLink.href);
            var ppon = thisLink.href.match(/\d+/)[0];
            console.log(ppon);

            var a = document.createElement('a');
            var linkText = document.createTextNode("Preview Order");
            a.appendChild(linkText);
            a.title = "Preview Order";
            a.href = "https://website.com/Field/DownloadPendingPO?POPPKeyID=" + ppon + "&co=1&po=" + ppon;
            a.target = "_blank";

            var parentNode = thisLink.parentNode;
            console.log(parentNode);
            parentNode.appendChild(a);

        }
    }

 })();
Das

UL-Element sieht folgenderma?en aus:

<ul uib-pagination="" items-per-page="formData.itemPerPage" class="pagination-sm ng-pristine ng-untouched ng-valid ng-scope ng-isolate-scope pagination ng-not-empty" data-total-items="pendingList.length" data-ng-model="formData.currentPage" data-max-size="10" data-ng-if="!attachmentView &amp;&amp; filteredDocuments.length > 0" role="menu"><!-- ngIf: ::boundaryLinks -->
<!-- ngIf: ::directionLinks --><li role="menuitem" ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev ng-scope disabled"><a href="" ng-click="selectPage(page - 1, $event)" ng-disabled="noPrevious()||ngDisabled" uib-tabindex-toggle="" class="ng-binding" disabled="disabled" tabindex="-1">Previous</a></li><!-- end ngIf: ::directionLinks -->
<!-- ngRepeat: page in pages track by $index --><li role="menuitem" ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&amp;&amp;!page.active}" class="pagination-page ng-scope active"><a href="" ng-click="selectPage(page.number, $event)" ng-disabled="ngDisabled&amp;&amp;!page.active" uib-tabindex-toggle="" class="ng-binding">1</a></li><!-- end ngRepeat: page in pages track by $index -->
<!-- ngIf: ::directionLinks --><li role="menuitem" ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next ng-scope disabled"><a href="" ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle="" class="ng-binding" disabled="disabled" tabindex="-1">Next</a></li><!-- end ngIf: ::directionLinks -->
<!-- ngIf: ::boundaryLinks -->
</ul>

Wie ich oben sagte: Wenn ich es so einstelle, dass es ausgeführt wird, wenn ich irgendwo auf das Dokument klicke, funktioniert die Funktion wie erwartet. Was mich noch mehr verwirrt, ist, dass es bei Verwendung von document.onload nicht funktioniert. Es ist, als ob die Seite erst dann mit dem Laden von Daten beginnt, wenn ich anfange, mit ihr zu interagieren. Der Grund, warum ich versuche, die Funktion auszuführen, wenn auf Paginierung geklickt wird, liegt darin, dass die Seite anscheinend alle Daten abruft und sie an einem Ort speichert (den ich nicht sehen kann) und dann einfach durch die Seite bl?ttert, wenn auf Paginierung geklickt wird. Daher muss ich die Funktion für den generierten Link auf der neuen Seite ausführen, sobald auf die Paginierung geklickt wird.

Es scheint, als müsste ich die Ausführung von document.onload verz?gern oder auf andere Weise herausfinden, warum die Dokumentdaten nach dem Laden der Dokumentdaten nicht ausgeführt werden, wenn auf das UL-Paginierungselement geklickt wird?

P粉777458787
P粉777458787

Antworte allen(1)
P粉122932466

而不是等待頁(yè)面呈現(xiàn),然后循環(huán)遍歷所有元素以附加錨標(biāo)記。只需使用 MutationObserver 來(lái)處理運(yùn)行邏輯后呈現(xiàn)的任何元素。

JS

(function() {
    'use strict';

    const createLinks = function ( nodeElement ){
        const queryElem = nodeElement.parentElement || nodeElement;
        const links = queryElem.querySelectorAll("a[href*='/Field/POPendingCreate/']");

        for ( const link of links || [] ){
            // Skip link if Preview has been attached
            if ( link.createLinkReady ) continue;

            // Get numbers from link href
            const [ ppon ] = link.href.match(/\d+/);

            // Create an anchor tag
            const a = document.createElement('a');
            a.innerHTML = 'Preview Order';
            a.setAttribute( 'title', 'Preview Order' );
            a.setAttribute( 'href', `https://website.com/Field/DownloadPendingPO?POPPKeyID=${ppon}&co=1&po=${ppon}` );
            a.setAttribute( 'target', '_blank' );
            a.setAttribute( 'rel', 'nofollow' );

            // Append anchor tag to parent element
            link.parentElement.appendChild( a );
            link.createLinkReady = true;
        }

    }

    // Create DOM MutationObserver
    const Observer = new MutationObserver( function( mutationsList ) {
        // Loop through mutations
        for ( const mutation of mutationsList || [] ) {
            // Loop through added nodes
            for ( const node of mutation.addedNodes || [] ){
                // Run createLinks on node
                createLinks( node );
            }
        }
    });

    // Observe DOM for new elements starting from document.body
    Observer.observe( document.body, { childList:true, subtree:true } );

    // Process links that have been rendered
    createLinks( document.body );
 })();
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage