簡體   English   中英

如何使用腳本中其他JS文件中定義的對象#

[英]How to use object defined in other JS file in Script#

我遇到了腳本#的問題。 我有一個ASP.NET頁面,它加載一個JavaScript文件並使用那里的對象。

var tracker = Piwik.getTracker(...);

現在我還有一個腳本#生成的JavaScript文件,該文件也包含在同一頁面中。 現在我想在Script#.cs文件中使用tracker對象。

Type.InvokeMethod(tracker, "trackPageView");

不編譯:在當前上下文中不存在

Type.InvokeMethod("tracker", "trackPageView");

編譯但輸出:'tracker'.trackPageView();

有任何想法嗎?

在嘗試為第三方JavaScript庫發出代碼時,使用Script.Literal會起作用但通常應該避免。 使用Script#的重點是獲得編譯器支持,並且易於重構。

如果您計划在其他項目中使用Piwik,我建議您在Script#library中創建一些新類,或者甚至建議單獨的Script#Import庫。

關鍵是用屬性[Imported]標記這些類 - 這個屬性將阻止為類創建一個js文件,但會給你所有強大的輸入和重構的好處,使腳本#太棒了。

我不確定“Piwik”是什么,但我認為它是javascript庫中的Singleton對象。 創建以下兩個類。

[Imported]//we don't want this to show up in the javascript source.
public sealed class Tracker
{
    public void TrackElement()//this will write trackElement() in emitted js.
    {

    }


}


[Imported]//we don't want this to show up in the javascript source.
public static class Piwik
{
    public static Tracker GetTracker(string item)//this becomes getTracker()
    {
        return null;
    }


}

您現在可以在腳本#中編寫這樣的代碼

Tracker tracker = Piwik.GetTracker("whatever");//c#

它會發出看起來像這樣的javascript。

var tracker = Piwik.getTracker('whatever');//javascript

已經找到它: Script.Literal("tracker.trackPageView()");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM