• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

jQuery Plugin multiDownload in GreaseMonkeys

Shibb

New member
Hi.

Ich habe mir multiDownload heruntergeladen und folgendes Script funktioniert zu meiner Zufriedenheit:

PHP:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="jquery.multiDownload.js"></script>
<title>jQuery multiDownload Plugin Demo</title>


</head>

<body>

<ul>
<li><a href="1.zip" class="my-file">File 1</a></li>
<li><a href="2.zip" class="my-file">File 2</a></li>
<li><a href="3.zip" class="my-file">File 3</a></li>
</ul>

<a href="#" id="download-all">Download All</a>


<script>
$('#download-all').click(function (event) {
    event.preventDefault();
    $('.my-file').multiDownload();
});
</script>
</body>
</html>

Diese Funktionalität möchte ich in einem GreaseMonkeys Script nutzen. Das Script läuft auf einer Seite die bereits jQuery enthält, deshalb habe ich nicht erneut ein jQuery Library in folgenden Script geladen:

PHP:
var imported = document.createElement('script');
imported.src = 'jquery.multiDownload.js';
imported.type = 'text/javascript';
document.head.appendChild(imported);
$(document).ready(function(){

url="1.zip";

var anker = document.createElement('a');
anker.href = url;
anker.class = "my-file";

var downloadAnker = document.createElement('a');
downloadAnker.href = "#";
downloadAnker.id = "download-all";
downloadAnker.innerHTML = "Download";

$('#mitte').append(anker);
$('#mitte').append(downloadAnker);
    
$('#download-all').click(function (event) {
    event.preventDefault();
    $('.my-file').multiDownload();
});
});

Den Fehler den ich erhalte:
Code:
TypeError: $(...).multiDownload is not a function
 
Include Js File in ein JS File

Hi.

Hier wird erklärt wie man ein JS in einem anderen JS File lädt. Nur leider funktioniert das nicht:

Meine HTML Seite
PHP:
html>
<head>

<!--<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>-->

</head>

<body>
<div id="mitte"></div>

</body>
</html>

Mein js script via GreaseMonkeys:
PHP:
document.addEventListener("DOMContentLoaded", function(event) {

console.log("DOM fully loaded and parsed");
  
var imported = document.createElement('script');
imported.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js";

document.head.appendChild(imported);
$('#mitte').innerHTML = "123";

});

Den Fehler den ich erhalte:
Code:
ReferenceError: jQuery is not defined jquery.multiDownload.js:28
ReferenceError: $ is not defined

Es scheint so als wenn die Library zwar hinzugefügt wird aber die Library nicht vom DOM erkannt wird, kann man den iwie erneut durch parsen?
 
AW: Include Js File in ein JS File

Du musst es schon auch richtig machen, exakt so wie es im Stackoverflow-Thread gezeigt wird - du musst mit einem Callback und onload bzw. onreadystatechange arbeiten, da das Skript asynchron geladen wird und die Skript-Ausführung nicht anhält.
Schau dir einfach mal an, wie ich das gemacht habe: https://github.com/j-l-n/jln.js/blob/master/jln.js#L58

- - - Aktualisiert - - -

Threads zusammengeführt, da die Ursache für das Problem mit jQuery multiDownload exakt dasselbe ist.
 
Zurück
Oben