1

私が読んだことはすべて、要素.onclickプロパティを使用することを示していますが、それは私の状況では機能していないようです。番号629216818を解析して、varialbe:fbidに設定しようとしています。これはGreasemonkeyスクリプトであるため、HTMLを直接編集することはできません。私はプロではないので、愚かなことをしているだけかもしれませんが、HTMLとJavascriptは次のとおりです。

<div id="petRightContainer">
<a title = "Pet trainer bonus: Your companion will level 5% faster." href="setup.php?type=companion&gtRandom=8167343321487308">
<div class="petRight" style="background-image:url(/fb/res/gui4/companion/cu_sith.jpg)"></div>
</a>
<div class="petRightLevel">
<a href="#" onClick="publishToWall('http://www.ghost-trappers.com/fb', 'Look at the cool augmentations my companion has received on Ghost Trappers.', 'Look at my new companion on Ghost Trappers!  I\'ve named it Jankie.  ', null, 'index.php?si=629216818&fromWall=1', 'white/companion_32.jpg', 'companion/wallpost_augmentation_12.jpg', 'companion/wallpost_augmentation_21.jpg', 'companion/wallpost_augmentation_11.jpg', null)">Dog</a>                        
</div>

<script type="text/javascript">

    fbid = 0;
    fbidRegex = /\d{3,}(?=&fromWall=1)/;

    if ( document.getElementsByClassName("petRightLevel")[0]){

       element = document.getElementsByClassName("petRightLevel")[0].firstChild;
       codeStore = element.onclick;
       fbid = fbidRegex.exec(codeStore);
       document.write("it is working ");
    }

    document.write(fbid);

</script>
4

2 に答える 2

0

私はこれがあなたのために働くかもしれないと思います。

<script type="text/javascript">
    fbid = 0;
    fbidRegex = /\d{3,}(?=&fromWall=1)/;
    if(document.getElementsByClassName("petRightLevel")[0]){
        element = document.getElementsByClassName("petRightLevel")[0].firstChild;
        // callback function to execute when the element onclick event occurs.
        codeStore = element.onclick = function(){
            fbid = fbidRegex.exec(codeStore);
            document.write("it is working ");
            document.write(fbid);
        }
    }
</script>
于 2012-05-26T03:28:19.233 に答える
0

問題は次の行にあります。

element = document.getElementsByClassName("petRightLevel")[0].firstChild;

Firefoxやその他のdocument.getElementsByClassNameHTMLをサポートするブラウザを使用している場合は、との間にスペースがあります<div class="petRightLevel">

<a href="#" onClick= ...>

、firstChildは実際にはリンクではなくテキストノードです。あなたがする必要があるのは、2つの要素の間のスペースや改行を削除することです。

IEを使用している場合、IEはバージョン8までdocument.getElementsByClassNameをサポートしていないため、問題はjavascriptの同じ行にあります。

更新:次のJavaScriptコードは、HTMLに触れずにテストしたすべてのブラウザーで機能します。

<script type="text/javascript">

    fbid = 0;
    fbidRegex = /\d{3,}(?=&fromWall=1)/;

    var divs = document.getElementsByTagName("div");
    var link = null;

    for (var i=0;i<divs.length;i++)
    {
       if(divs[i].getAttribute("class") ==="petRightLevel")
       {
          link = divs[i].getElementsByTagName("a")[0];
          break;
       }
    }
    if (link){
       codeStore = link.onclick;
       fbid = fbidRegex.exec(codeStore);
       document.write("it is working ");
    }

    document.write(fbid);

</script>

アンカーを取得するだけでよい場合は、これよりもはるかに簡単です。

于 2012-05-26T05:37:45.003 に答える