Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste
JavaScript in MyCode verwenden
#1
Ich entwickel aktuell einen MyCode, der JavaScript verwenden soll.

Allerdings wird mir im Beitrag selber dann immer nur der <script>-Bereich in Klartext angezeigt, der korrekt replaced wurde.

Hier mal ein Beispiel, was ich meine.
Regulärer Ausdruck = \[myCode=(.*?)\](.*?):(.*?):(.*?):(.*?)\[/myCode\]

Ersetzung = <div id="$1"><script>myFunction($2,$3,$4,$5,'$1');</script></div>

Die entsprechende JavaScript-Datei, welche die Funktion myFunction enthält, ist im headerinclude-Template eingebunden.

Benutzen tu ich den MyCode folgendermaßen:
[myCode=cID1]1:2:3:4[/myCode]

Ausgegeben wird aber nur folgendes:
<div id="cID1"><script>myFunction(1,2,3,4,'cID1');</script></div>

Der Div-Container ist im Beitrag nicht zu sehen, nur im Quellcode. Der script-Bereich ist aber sichtbar, was mich vermuten lässt, dass JavaScript von MyBB geblockt wird.

Lässt sich das, sofern ich mit meiner Vermutung richtig liege, irgendwie umgehen?

Lieben Gruß,
Floo
#2
Sicher das Du die richtige Funktion im jscript auch mit dem mycode ansprichst ? Poste doch mal den ganzen jscript und was es tun soll am Ende.
Mit freundlichen Grüßen

MrBrechreiz
#3
Ja, das ist die richtige Funktion. Selbst wenn das nicht der Fall wäre, dann bliebe der Beitrag halt ohne den Script-Bereich. Aber dass der ganze Quellcode angezeigt wird ist verwunderlich.

Was das JScript dir jetzt bringen soll ist mir schleierhaft aber bitte:
Code:
/*
Author: Benjamin Eckstein
http://www.umingo.de

You can use this code in any manner so long as the author's
name, Web address and this disclaimer is kept intact.
********************************************************
Usage Sample:
<div id="cID">Init<script>countdown(100000,'cID');</script></div>
*/

function countdown(time,id) {
    t = time;
    d = Math.floor(t/(60*60*24)) % 24;
    h = Math.floor(t/(60*60)) % 24;
    m = Math.floor(t/60) % 60;
    s = t % 60;
    
    d = (d >  0) ? d+"d " : "";
    h = (h < 10) ? "0"+h  : h;
    m = (m < 10) ? "0"+m  : m;
    s = (s < 10) ? "0"+s  : s;
    
    strZeit = d + h + ":" + m + ":" + s;
    
    if (time > 0)
    {
        window.setTimeout('countdown('+ --time+',\''+id+'\')',1000);
    } else {
        strZeit = "Countdown expired";
    }
    document.getElementById(id).innerHTML = strZeit;
}

function myFunction(d,h,m,s,id) {
    countdown(d*60*60*24+h*60*60+m*60+s,id);
}

Pack ich den selben Code in eine externe .html-Datei, dann geht er. Also muss ja rein theoretisch MyBB dran schuld sein Smile
#4
Also bei mir läuft es so.

Die Scriptdatei ist ja klar.

Regulärer Ausdruck *

Code:
\[myCode=(.*?)\](.*?),(.*?),(.*?),(.*?)\[/myCode\]



Ersetzung *
Code:
<div id="$1"><script>countdown2($2,$3,$4,$5,'$1');</script></div>



Im Beitrag

Code:
[myCode=cID4]10,20,30,40[/myCode]


Für jede Funktion die er abwärts zählen soll, müsstest Du einen neuen mycode machen.

Die jscript Datei hab ich in die postpit Templates gesetzt, ganz ans Ende.
Mit freundlichen Grüßen

MrBrechreiz
#5
Wenn das nur Zahlen sein sollen, unbedingt die RegExp auch entsprechend anlegen [0-9]+ statt (.*?).

Bei .* muss dir klar sein, daß beliebiger JS-Code eingeschleust werden kann.
#6
(25.07.2013, 12:19)MrBrechreiz schrieb: Also bei mir läuft es so.
Hast du sonst irgendwelche Einstellungen in deinem MyBB geändert? Ich habe jetzt alles so gemacht wie du sagtest, ich bekomme weiterhin den <script>-Bereich in Klartext angezeigt. Also kein Countdown, nichts.

Template postbit:
PHP-Code:
{$ignore_bit}
<
a name="pid{$post['pid']}id="pid{$post['pid']}"></a>
<
table border="0" cellspacing="{$theme['borderwidth']}cellpadding="{$theme['tablespace']}class="tborder" style="{$post_extra_style} {$post_visibility}id="post_{$post['pid']}">
    <
tbody>
        <
tr>
            <
td class="subjecttable">

            
Author

                        
</td>
                        <
td class="subjecttable">

                        
{
$post['icon']}{$post['subject']} {$post['subject_extra']}
                        </
td>
                </
tr>
        <
tr>
                         <
td  width="150px" valign="top" class="trow2 post_content {$unapproved_shade}">
              <
strong>{$post['profilelink']}</strong> {$post['onlinestatus']}<br />
{
$post['usertitle']}<br />                         
{
$post['useravatar']}<br> <span class="smalltext">
              
                  {
$post['userstars']}
                  {
$post['groupimage']}                                                                
                  {
$post['user_details']}
              </
span>
             </
td>
                         <
td class="trow2 post_content {$unapproved_shade}">

                <
div class="post_body" id="pid_{$post['pid']}">
                    {
$post['message']}
                </
div>
                {
$post['attachments']}
                {
$post['signature']}

                <
div class="post_meta" id="post_meta_{$post['pid']}">
                {
$post['iplogged']}
                </
div>

                        </
td>
        </
tr>
        <
tr>
                        <
td class="trow2 post_content {$unapproved_shade}""><center><small>{$post['postdate']}{$post['posttime']}</small></center></td>
            <td class="
trow1 post_buttons {$unapproved_shade}">
                <div class="
post_management_buttons float_right">{$post['button_rep']} {$post['button_spam']}{$post['button_bday']}{$post['button_edit']}{$post['button_quickdelete']}{$post['button_quote']}{$post['button_report']}{$post['button_warn']}{$post['button_forward_pm']}{$post['button_delete_pm']}
                </div>
            </td>
        </tr>





        <tr style="
{$post['imb_display']};" id="imb_{$post['pid']}">
            
{$post['itsmybirthday_wishes_data']}
        </tr>
    </tbody>
</table>{myadvertisements[zone_3]}
<script type="
text/javascript" src="{$mybb->settings['bburl']}/jscripts/countdown.js"></script> 

HTML ist im Subforum selbstverständlich erlaubt.
#7
Wenn HTML aktiviert ist, kann JavaScript entfernt werden.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#8
Wie jetzt? Die Aussage versteh ich nicht so ganz. Klingt für mich so, als müsste ich HTML im Sub deaktivieren, damit ich JavaScript verwenden kann. Klappt aber auch nicht.
#9
Nein er meint damit, wenn Du sowieso html zulässt, dann brauchst Du auch keinen mycode mit jscript erstellen.
Mit freundlichen Grüßen

MrBrechreiz
#10
In dem einen Subforum, wo ich es getestet habe, war HTML erlaubt. In den anderen Subs nicht, und auch dort soll es funktionieren. Klappt aber auch mit deakt. HTML nicht. Sad