# JS-Funktion in HTML-File einer anderen Domain extrahieren und ausführen



## Benutzer007 (20. März 2015)

Hallo,

wie würde man mit JQuery eine JS-Funktion aus einem HTML-File einer anderen Domain extrahieren und dann ausführen?

Mit

```
$( "body" ).load( "http://MeineAndereWebsite.com/ #testscript2" );
```
komme ich nicht weiter, weil:


> Cross-Origin-Anfrage blockiert: Die Same-Origin-Regel verbietet, die externe Ressource auf http://MeineAndereWebsite.com/ zu lesen. Dies kann gelöst werden, indem die Ressource auf die gleiche Domain geschoben wird oder CORS aktiviert wird.



Wie aktiviere ich CORS, oder wie könnte man es sonst machen?

MeineAndereWebsite.com enthält folgenden HTML-Code, *es ist auf diesem Server nicht möglich separate Files (js, json, jsonp etc.) zu speichern*:


```
<div class="blogpost">

<script id="testscript2" type="text/javascript">
  $('body').append('<h1>h1</h1>');
  $('body').append('<iframe src="http://MeineAndereWebsite.com/"></iframe>');
</script>

</div>
```

LG


----------



## SpiceLab (20. März 2015)

Benutzer007 hat gesagt.:


> Wie aktiviere ich CORS [...]?


http://de.wikipedia.org/wiki/Cross-Origin_Resource_Sharing#Funktionsweise


----------



## Benutzer007 (20. März 2015)

Ich habe auf diesem Server (MeineAndereWebsite.blogspot.com) keinerlei Rechte, da von Google.
Ich habe nur eine Chance, wenn ich den Code entsprechend gestalte.


----------



## jeipack (20. März 2015)

Alternative zu CORS:
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Aber wenn du keine Möglichkeit hast die andere Seite irgendwie zu beeinflussen bleibt dir nur noch:

- Die Seite mit PHP holen und dort das raus zusuchen was du brauchst.

- http://stackoverflow.com/a/17299796/2481955 ab Whatever Origin


----------



## Benutzer007 (20. März 2015)

Wie gesagt, den Code einer Seite (Post eines Blogs) kann ich gestalten, wie ich will. Dort sollte auch das Script enthalten sein.
Aber mit PostMessage wäre so etwas generell möglich?


----------



## jeipack (20. März 2015)

Wenn du keinen Zugriff auf die andere Seite hast nicht, denn da muss auch bisschen JS eingefühgt werden.
Dann musst du auf Whatever Origion & Co zurück greifen oder es mit PHP lösen.


----------



## Benutzer007 (20. März 2015)

Anscheinend habe ich die Gabe mich unzureichend auszudrücken ;-(

Der "Server" ist Google blogspot.com, dort werden Blogs gehostet, also soetwas wie http://googleblog.blogspot.de/ oder eben MeineAndereWebsite.blogspot.com
Ich kann dort zwar meinen Blog bearbeiten - auch JS-code -, aber ich kann dort keine Files hochladen; Fotos sind m. W. die Ausnahme.


----------



## alxy (20. März 2015)

@Benutzer007 Genau das meint @jeipack auch. Du kannst das dann nicht so einfach machen, sondern musst eine der auf StackOverflow vorgeschlagenen Alternativen benutzen.


----------



## Benutzer007 (20. März 2015)

Es liegen beide Seiten - MeineWebsite und MeineAndereWebsite - bei blogspot.com, nur zu Klarheit.



> Alternative zu CORS:
> https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage


https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
Damit muss ich auf dann beiden Webseiten bearbeiten, richtig? 



> Aber wenn du keine Möglichkeit hast die andere Seite irgendwie zu beeinflussen bleibt dir nur noch:


Wie gesagt, ich kann den Blogeintrag bearbeiten und dort auch JS-Funktionen unterbringen.

http://whateverorigin.org/
Das bedeutet, dass der Verkehr über die läuft? Wenn die ausfallen, ist Ende? Und Datensicherheit?


----------



## SpiceLab (21. März 2015)

Benutzer007 hat gesagt.:


> Es liegen beide Seiten - MeineWebsite und MeineAndereWebsite - bei blogspot.com, nur zu Klarheit.


Schön, dass wir in Post #9 diese nicht minder relevante Info auch mal erhalten.

Damit ist deine Frage und meine Antwort bzgl. der CORS-Aktivierung obsolet.

Hab in deinem ersten Post selbstverständlich angenommen, dass du für beide Domains über administrative Zugriffsrechte verfügst, denn _mysubdomains.blogspot.com_ werden mit keiner Silbe erwähnt - selbst in den Code-Snippets nicht!

Soviel zu deiner Gabe, dich unzureichend auszudrücken.
[edit]Tipp-Ex[/edit]​


----------



## Benutzer007 (21. März 2015)

Sorry, SpiceLab, aber das passiert leider schon mal, wenn man nicht so im Thema ist und deshalb Dinge falsch einschätzt.

Die Seiten sollen/werden - im Moment jedenfalls - beide bei blogspot.com als Subdomains geführt (werden), wobei das ganz sicher nur für die aufrufende Seite ist, die aufgerufene Seite bzw. der JS-Code könnte auch woanders liegen. Ich kann mir nur keine Kosten für kostenpflichtiges Hosting leisten.

Es können bei blogspot.com nur HTML-Seiten erstellt werden und m. W. nur Bilder hochgeladen werden, bei  der Verwendung von CSS und JS gibt es jedoch m. W. ansonsten keine Einschränkungen, das war damals das ausschlaggebende Argument nicht auf WP zu setzen.

Das bedeutet jetzt vermutlich, dass nur die PostMessage-Variante bleibt, die aber offenbar nicht gern verwendet wird wegen gewisser Sicherheitsaspekte, wenn ich das bei Mozilla richtig verstanden habe.

Weiß jemand, ob das, was ich vorhabe, evtl. mit github.com geht? Dann könnte ich ja dort das Script (m. W. kostenfrei) ablegen, es könnte dann über ein Script-Tag eingebunden werden von der aufrufenden Seite, wäre also alles auch viel einfacher.


----------



## alxy (21. März 2015)

```
$.ajaxSetup({
    scriptCharset: "utf-8", //maybe "ISO-8859-1"
    contentType: "application/json; charset=utf-8"
});

$.getJSON('http://whateverorigin.org/get?url=' +
    encodeURIComponent('http://MeineAndereWebsite.com/') + '&callback=?',
    function(data) {
        console.log("> ", data);
        //If the expected response is text/plain
        $("#target").html(data.contents);
});
```

Was ist daran das Problem? Fraglich ist, was willst du damit machen. Du würdest damit den gesamten Quelltext der anderen Seite auslesen und dann auf der einen Seite irgendwo einfügen. Das kann nur sch*** werden. Ansonsten: Grundsätzlich kannst du bei WP ALLES machen (sogar selbst hosten) und bei Google EXTREM eingeschränkt bist


----------



## SpiceLab (21. März 2015)

Benutzer007 hat gesagt.:


> war damals das ausschlaggebende Argument nicht auf WP zu setzen





alxy hat gesagt.:


> Grundsätzlich kannst du bei WP ALLES machen (sogar selbst hosten)


WP? WordPress? Server-Hosting?


----------



## Benutzer007 (21. März 2015)

Wenn man WP selber hosted ja, aber nicht als Subdomain von WP bzw. nur gegen Cash. 
Wer nichts ausgeben will, fährt mit blogspot.com am besten.


----------



## jeipack (23. März 2015)

Benutzer007 hat gesagt.:


> Das bedeutet, dass der Verkehr über die läuft? Wenn die ausfallen, ist Ende? Und Datensicherheit?


Erste Frage: jep wenn die down sind ist Ende Gelände.

Zweite Frage: Datensicherheit? Alles worauf du zugreifst ist so oder so öffentlich


----------



## Benutzer007 (23. März 2015)

alxy hat gesagt.:


> Ansonsten: Grundsätzlich kannst du bei WP ALLES machen (sogar selbst hosten) und bei Google EXTREM eingeschränkt bist


*Bei Wordpress geht fast gar nichts, wenn man nicht dafür bezahlt* (https://store.wordpress.com/plans/), ich habe mich gerade noch einmal angemeldet. Selbst eine einfache Umleitung ist nicht möglich. Im Gegensatz dazu kannst du bei Google fast alles machen, und wenn du eine eigene Domain irgendwo hast, bist du m. W. gar nicht mehr eingeschränkt. Ich habe das vor Jahren schon einmal gemacht. Wenn ich mich irren sollte, sage mir bitte, wo das der Fall sein soll, das würde mich interessieren.



alxy hat gesagt.:


> Was ist daran das Problem? Fraglich ist, was willst du damit machen. Du würdest damit den gesamten Quelltext der anderen Seite auslesen und dann auf der einen Seite irgendwo einfügen. Das kann nur sch*** werden.


Das habe ich geschildert: Ich nutze im besten Fall zwei kostenlose Subdomains bei Googles blogspot.com - definitiv aber nur Domäne 1 und Domäne 2 bzw. die Funktion, die dort zur Verfügung steht, irgendwo anders - und will auf Domäne 2 (MeineAndereWebsite.blogspot.com) eine JS-Funktion zur Verfügung stellen, die auf Domäne 1 (MeineWebsite.blogspot.com) aufgerufen und verwendet werden kann. Da man blogspot.com keine separaten JS-Files ablegen kann, bleibt nur die Möglichkeit, diese Funktion in eine HTML-Seite eine HTML-Seite zu packen (z. B. ein Blog-Post), und diese Seite dann aufzurufen, was in der Tat "nur sch*** werden" kann. Sag mir, wie es besser geht und ggf. mit blogspot.com oder https://github.com/ oder anders, und ich mache es. Dass es von einer von mir bei Strato gehosteten Domain geht, habe ich schon getestet.


----------



## jeipack (23. März 2015)

Wieso fügst du diese JS-Funktion nicht einfach auch bei Domain1 ein? Es gibt keinen (ersichtlichen) Grund wieso du die Funktion zuerst von Domain2 holen willst um dann auf Domain1 auszuführen.


----------



## Benutzer007 (23. März 2015)

Das ist im Moment nur ein Test. Es soll ein Tool sein, das jeder andere Blog ebenfalls einsetzen können soll. 

Ich versuche immer erst die Billigvariante, und da ist Blogger wirklich unübertroffen bis auf ein paar blöde Einschränkungen, bevor ich dann Geld ausgebe, wenn es nicht anders geht.

So, wie ich das momentan sehe, werde ich wohl um eine Lösung in der Art von Github-Gist (https://gist.github.com/) oder ähnliches nicht herumkommen, wenn es nicht sogar irgendwann eine separat gehostete Domain ist.


----------



## jeipack (23. März 2015)

Auch wenn es jeder andere einsetzen können soll, wieso bietest du nicht einfach den Code ein den die Blogger dann bei sich einfügen können?

Sie müssen ja so oder so Code einsetzen. Ob es jetzt die eigentlichen Funktionen sind oder eben den Code um die Funktionen zu holen macht doch keinen Unterschied.


----------



## Benutzer007 (23. März 2015)

Es soll nur ein Script-Tag eingebunden werden.

Ich probiere gerade mit Github, vielleicht hast du da Ahnung von.
Das JS-Script soll so eingebunden werden:

```
<script src="https://gist.github.com/Peter4711/74aa267e703c1ad3acdd.js"></script>
```
Wenn ich diesen Link "*Embed URL*" verwende, passiert nichts, wenn ich das mit Firebug im Blog teste:

```
/*
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "https://gist.github.com/Peter4711/74aa267e703c1ad3acdd.js";
$("head").append(s);
*/
```
Es wird allerdings, wenn ich die URL im Browser angebe, document-write-Code angezeigt:

Wenn ich den Link von "HTTPS clone URL" verwende "htt_ps://gist.github.com/74aa267e703c1ad3acdd.git" erscheint gar nichts, weder mit Test in Firebug noch als URL im Browser.

Es gibt aber einen RAW-Button auf der Seite" htt_ps://gist.github.com/Peter4711/74aa267e703c1ad3acdd", wenn man den klickt erscheint der JS-Code im Browser, nur der Link ist so irre lang:

```
/*
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "https://gist.githubusercontent.com/Peter4711/74aa267e703c1ad3acdd/raw/22aaef7a7e3cb0fde0ef0366ee461571e05e693b/test";
$("head").append(s);
*/
```
Kennst du eine andere/bessere/kürzere Variante? Ich meine, die gibt es. Ich meine, es gibt sogar eine Variante, wo der Username nicht auftaucht.

LG


----------



## ikosaeder (23. März 2015)

Benutzer007 hat gesagt.:


> Wenn man WP selber hosted ja, aber nicht als Subdomain von WP bzw. nur gegen Cash.
> Wer nichts ausgeben will, fährt mit blogspot.com am besten.


Da gibt es doch aber noch ganz andere Möglichkeiten, z.B. Bplaced.de
Da kannst du kostenlos und werbefrei deine Seite erstellen und auch WP oder ähnliches installieren. PHP, MySql oder Postgresql ist verfügbar. Kostenpflichtige Erweiterungen sind möglich.
Habe mir blogspot mal angesehen. Für jemanden der keine Ahnung hat eine einfache Möglichkeit eine Seite zu erstellen, aber doch sehr eingeschränkt.


----------



## jeipack (23. März 2015)

Gib doch auch mal den Link zu deinem Blog?


----------



## ikosaeder (23. März 2015)

ikosaeder.bplaced.de
Ist allerdings nicht viel zu sehen, ist eher so ein privates Testlabor zum Lernen und ausprobieren für mich.


----------



## SpiceLab (23. März 2015)

jeipack hat gesagt.:


> Gib doch auch mal den Link zu deinem Blog?





ikosaeder hat gesagt.:


> ikosaeder.bplaced.de
> Ist allerdings nicht viel zu sehen, ist eher so ein privates Testlabor zum Lernen und ausprobieren für mich.


Die Bitte nach dem Link war sicher an @Benutzer007 gerichtet


----------



## ikosaeder (23. März 2015)

Danke @SpiceLab ich hab nicht aufgepasst. Egal, wird mein "Blog" eben schlechteste Website des Monats.
Obwohl ich gegen diese Website bislang jeden Monat verloren habe.
http://www.rasputin.de/CF/Jugend/


----------



## SpiceLab (23. März 2015)

ikosaeder hat gesagt.:


> Egal, wird mein "Blog" eben schlechteste Website des Monats.
> Obwohl ich gegen diese Website bislang jeden Monat verloren habe.
> http://www.rasputin.de/CF/Jugend/


Keine Kunst bei diesem vorsätzlich verursachten psychedelischen Augenkrebs 

Das Motto des "Webdesigners" lautete wohl:


> Keine Macht den Drogen. Aber keine Nacht ohne Drogen.


----------



## Benutzer007 (23. März 2015)

Der Blog ist nicht so wichtig, es geht eher ums Prinzip.


----------



## jeipack (23. März 2015)

Na das Prinzip ist im Grunde ja geklärt.


Wenn du nun aber DEINEN KONKRETEN Fall zum laufen bekommen willst, dann wäre der Blog (mit dem Code drin der nicht funktioniert) ziemlich wichtig


----------



## jeipack (23. März 2015)

ikosaeder hat gesagt.:


> ikosaeder.bplaced.de
> Ist allerdings nicht viel zu sehen, ist eher so ein privates Testlabor zum Lernen und ausprobieren für mich.


^^
Wenn wir schon Offtopic sind:
bplaced.net
*Du bekommst hier kostenlos und werbefrei bis zu:*





*2 GB Speicherplatz*
 für Deine Website





 PHP5 | 8x FTP | 8x MySQL | 8x PostgreSQL





 Unlimitierter Traffic & unbegrenzte Dateigröße

Wo ist der Haken?


----------



## ikosaeder (23. März 2015)

Ich habe noch keinen gefunden.
Aber du musst richtig Lesen: Entweder 1 GB und 8xFTP/MySql ... oder 2GB und nur 2xFTP/MySql
Und du darfst keine Chats, oder Browsergames laufen lassen.


----------

