Kompilacja kodu javascript do postaci strony.

0

Witam. W jaki sposób mogę skompilować kod javascript do postaci strony? Ustawienia pamięci wrzucę przez "body.onLoad" ale jak skompilować kod do postaci html? Czy da się to zrobić bez tworzenia obiektu window.top i całego drzewa elementów zawierającego interpretację graficzną + obsługę funkcji w3 ? Jest jakiś program co mi to przerobi (czy któraś przeglądarka) ? Czy może lepiej robić własny standard zamiast html, js i css(choć nie mam pojęcia jaki). Builder C++ (11) poległ na temacie i jak widzę do jakich rozwiązań doszli to aż się człowieko smutno robi. Czy jakaś przeglądarka mi to zrobi bez uruchamiania trybu graficznego?

4

Jakaś kręta idea.
Co jest PRAWDZIWĄ potrzebą ? Wygląda jak XY Problem do siódmej potęgi.

0

Nie rozumiem. Mam kod np.

<script>
window.top.licznik = 0;
tmp = document.createElement("BUTTON");
document.body.appendChild(tmp);
tmp.setAttribute("onClick","window.top.licznik++;alert(window.top.licznik);this.innerText='Licznik to: '+window.top.licznik+';");
tmp.innerText = "Licznik to: 0";
</script>

Po wygenerowaniu strony powinien się pojawić jedynie przycisk z napisem "Licznik to: 0" - bez ustawienia wartości window.top.licznik (bez jakiejkolwiek operacji na pamięci).

I dopiero na tej stronie bym dopisał sobie później <body onLoad="window.top.licznik=0;">

Nie chcę odpalać trybu graficznego.

Nie powinno być problemu prawda?
111111.jpg

Chcę, żeby wygenerowana została taka struktura pliku HTML jak jest po prawej stronie.

1

@johnny_Be_good:

Dalej nie podałeś celu. Ma być widoczność strony, ale nie musi być funkcjonalna, cy ki ciort ?

1
johnny_Be_good napisał(a):

Chcę, żeby wygenerowana została taka struktura pliku HTML jak jest po prawej stronie.

HTML to sysf (sam powiedziałeś wyżej), tylko C rules

1

To nie jest łatwe zadanie. Musisz dysponować silnikiem webowym, do którego wyślesz html + js, później uruchomisz maszynę JS, poczekasz chwilę i pobierzesz wynik jako html.

Jest wiele silników, które ci to zrobią - lepiej lub gorzej. Pewnie najlepiej by ci to zrobiło Chromium Embedded Framework (CEF). Musiałbyś pobrać to w formie biblioteki i dołączyć do projektu i użyć. https://stackoverflow.com/a/45439643

2
johnny_Be_good napisał(a):

Witam. W jaki sposób mogę skompilować kod javascript do postaci strony? (...) do postaci html?

Odpowiedzią na to mogą być generatory stron statycznych, prerenderowanie komponentów React do postaci HTML. Np. Next.js to ci załatwia. Piszesz w JS apkę w React, a może ci to wyeksportować do HTMLa.

Tylko że nie wiem, czy pytasz o to, o co mi się wydaje, że pytasz. Bo sposób zadania pytania i jego treść jest dość dziwna.

0

@LukeJL: instalowałem ostatnio JavaFx, Buildera C++ 11, Eclipse, NetBeans - i żaden z tych kompilatorów nie zrobił tego co chciałem. To co wcześniej potrzebowałem rewelacyjnie objął mi builder 6.0. Otóż robię grę, i troszkę wolno mi to szło, więc pomyślałem o własnym frameworku do JS (zrobiłem 4 funkcje - i są GENIALNE), upraszczają wszystko niesamowicie i pomyślałem że przydałby mi się własny generator HTML. Przeglądarki powinny mieć takie opcje - bez alokacji pamięciu jedynie wykonanie tego co ma być wyświetlone.

1

JavaFx, Buildera C++ 11, Eclipse, NetBeans

Ale to nie są toole frontendowe ani nawet webowe, więc czemu miałyby ci zrobić frontend?
Dwa, że takich funkcjonalności nie należy szukać w edytorach, tylko w jakimś osobnym toolingu.

pomyślałem że przydałby mi się własny generator HTML.

weź poszukaj "static site generator", jeśli o to ci faktycznie chodzi. Bo jak czytam ten wątek, to miejscami mam coś jak "konkretny problem, na które są konkretne rozwiązania", a czasami jak "o co chodzi w ogóle? jaki problem chcemy rozwiązać?"

I dopiero na tej stronie bym dopisał sobie później <body onLoad="window.top.licznik=0;">

w jakim celu chcesz tak zrobić?

Nie chcę odpalać trybu graficznego.

JS możesz odpalić w Node.js i będzie bez trybu graficznego. Możesz użyć JSa jako coś, co ci wygeneruje później HTML.

2

Chętnie zobaczę twój język tworzenia dokumentu HTML. Mnie takie narzędzie też by się przydało i uprościło wiele prac.

1
johnny_Be_good napisał(a):

Czy jakaś przeglądarka mi to zrobi bez uruchamiania trybu graficznego?

Tak. Może nawet da się to połączyć z jakimś curlem do zaciągania obrazków.

1

szczerze? co jest trudnego w pisaniu htmla? Pytam szczerze robię to od 13 lat a twój sposób wydaje się pokraczny i wymagać 2x więcej kodu niż czysty html.

0
johnny_Be_good napisał(a):

Czy może lepiej robić własny standard zamiast html, js i css(choć nie mam pojęcia jaki).

Jak obiektowo zapisywać to, co jest widoczne na stronie. Kiedyś zadałem podobne pytanie i nie uzyskałem odpowiedzi oprócz propozycji użycia ‚frameworków’, które narzucają użycie wstawek kodu ‘html’ w połowicznej obiektowości (tylko kod Javascript jest w nich obiektowy). A na razie używam XML/XSL do generowania statycznej strony, jednak to nie jest odpowiedzią na problem. Do tego dochodzą jeszcze animacje z CSS, które trzeba samodzielnie zapisywać zamiast funkcjonalności Javascript.

3

I ChatGPT nie porafił nic sklecić w 5min?

Bardzo ciekawie robisz tę stronę, każdy div w oddzielnym iframe, onclick jako atrybut, często ludzie robią jakieś tam tmp.addEventListener("click", func); kto to widział, a najgorsi to są ci co jakieś vue, react, angular polecają :P

Nie wiesz tego, ale inspirujesz wielu ludzi

#include <webdriverxx/webdriverxx.h>
#include <iostream>
using namespace webdriverxx;

int main() {
    WebDriver firefox = Start(Firefox());
    firefox.Navigate("about:blank");
    firefox.Execute("window.top.licznik = 0;tmp = document.createElement(\"BUTTON\");document.body.appendChild(tmp);tmp.setAttribute(\"onClick\",\"window.top.licznik++;alert(window.top.licznik);this.inneText='Licznik to: '+window.top.licznik+';\");tmp.innerText = \"Licznik to: 0\";return 0;");
    String pageSrc = firefox.page_source();
    std::cout << pageSrc;
}
0
struct Firefox : Capabilities { // copyable
	Firefox(const Capabilities& defaults = Capabilities())
		: Capabilities(defaults) {
		SetBrowserName(browser::Firefox);
		SetVersion("");
		SetPlatform(platform::Any);
	}

	WEBDRIVERXX_PROPERTIES_BEGIN(Firefox)
	// Profile is a profile folder, zipped and base64 encoded.
	// TODO: add FirefoxProfile 
	WEBDRIVERXX_PROPERTY(Profile, "firefox_profile", std::string)
	WEBDRIVERXX_PROPERTY(LoggingPrefs, "loggingPrefs", LoggingPrefs)
	WEBDRIVERXX_PROPERTY(FirefoxBinary, "firefox_binary", std::string)
	WEBDRIVERXX_PROPERTIES_END()
};

} // namespace webdriverxx

#endif

A to nie powinno być "class" zamiast "struct" ? (skoro już w wątku o C++ jesteśmy).

1
johnny_Be_good napisał(a):
struct Firefox : Capabilities { // copyable
	Firefox(const Capabilities& defaults = Capabilities())
		: Capabilities(defaults) {
		SetBrowserName(browser::Firefox);
		SetVersion("");
		SetPlatform(platform::Any);
	}

	WEBDRIVERXX_PROPERTIES_BEGIN(Firefox)
	// Profile is a profile folder, zipped and base64 encoded.
	// TODO: add FirefoxProfile 
	WEBDRIVERXX_PROPERTY(Profile, "firefox_profile", std::string)
	WEBDRIVERXX_PROPERTY(LoggingPrefs, "loggingPrefs", LoggingPrefs)
	WEBDRIVERXX_PROPERTY(FirefoxBinary, "firefox_binary", std::string)
	WEBDRIVERXX_PROPERTIES_END()
};

} // namespace webdriverxx

#endif

A to nie powinno być "class" zamiast "struct" ? (skoro już w wątku o C++ jesteśmy).

Będą mi się śniły koszmary z MFC

1 użytkowników online, w tym zalogowanych: 0, gości: 1