বাহ্যিক ফাইলে জাভাস্ক্রিপ্টে সম্পর্কিত পাথ


84

সুতরাং আমি এই জাভাস্ক্রিপ্ট চালাচ্ছি, এবং ব্যাকগ্রাউন্ড চিত্রের পথ ব্যতীত সবকিছু ঠিকঠাক কাজ করে। এটি আমার স্থানীয় এএসপি.নেট দেব পরিবেশে কাজ করে তবে ভার্চুয়াল ডিরেক্টরিতে কোনও সার্ভারে স্থাপন করার পরে এটি কাজ করে না।

এটি একটি বাহ্যিক .js ফাইলে, ফোল্ডার কাঠামো

Site/Content/style.css
Site/Scripts/myjsfile.js
Site/Images/filters_expand.jpg
Site/Images/filters_colapse.jpg

তাহলে এখান থেকে জেএস ফাইলটি অন্তর্ভুক্ত করা হয়েছে

Site/Views/ProductList/Index.aspx

$("#toggle").click(function() {
    if (left.width() > 0) {
        AnimateNav(left, right, 0);
        $(this).css("background", "url('../Images/filters_expand.jpg')");
    }
    else {
        AnimateNav(left, right, 170);
        $(this).css("background", "url('../Images/filters_collapse.jpg')");
    }
});

আমি ব্যবহার করার চেষ্টা করেছি '/Images/filters_collapse.jpg'এবং এটিও কাজ করে না; তবে, আমি যদি এটি ব্যবহার করি তবে এটি সার্ভারে কাজ করবে বলে মনে হচ্ছে '../../Images/filters_collapse.jpg'

মূলত, আমি এএসপি.নেট টিল্ডার মতো একই কার্যকারিতা রাখতে চাই - ~

হালনাগাদ

বাহ্যিক .js ফাইলগুলিতে যে পাথগুলি অন্তর্ভুক্ত রয়েছে সেটির সাথে সম্পর্কিত বা .js ফাইলের আসল অবস্থান?


আপনার অ্যাপ্লিকেশন ডিরেক্টরিটি সার্ভারের সাথে তুলনায় বিকাশে কি আলাদা? ভিজ্যুয়াল স্টুডিওর অন্তর্নির্মিত ওয়েব সার্ভারটি '/' এ ডিফল্ট পাথ সেট করে যদি আপনার সার্ভারটি '/ মাই অ্যাপ' বলে থাকে তবে আপনার বেমানান আচরণ হতে পারে। আপনার ভিজ্যুয়াল স্টুডিও পথটি '/ মাই অ্যাপ'
সারভেশ

ঠিক এটাই সমস্যা! ভার্চুয়াল ডিরেক্টরিটি কোথায় অবস্থিত তার উপর নির্ভর করে প্রতিবারই আমি দেব থেকে উত্পাদনে স্যুইচ করে আমার জাভাস্ক্রিপ্ট আপডেট করতে চাই না ...
নেট

এটির মতো মনে হচ্ছে, superexpert.com/blog/archive/2009/02/18/… , আপনি যা খুঁজছেন তা is
সর্বवेश

আমি একটি ডিভ ট্যাগের পটভূমির চিত্রটি গতিশীলভাবে পরিবর্তন করতে জাভাস্ক্রিপ্ট ব্যবহার করছি। আমি কোডটি মাস্টার পৃষ্ঠা ফাইলে ফিরিয়ে দেওয়া এড়াতে চাই, যেহেতু এটি তার নিজস্ব বাহ্যিক। জেএস ফাইলটি অনেক বেশি পরিষ্কার করে ...
নট

জাভাস্ক্রিপ্টের জন্য like এর মতো কিছুই নেই। জেএসে আপনার কোনও সহায়ক ফাংশন থাকতে পারে। উদাহরণস্বরূপ আপনি MyJs.Url ('চিত্র / ফিল্টার.জেপ') কল করবেন এবং এটি আপনার ভার্চুয়াল ডিরেক্টরিটিকে উপস্থাপন করবে এবং স্ট্রিংটি ফিরে আসবে। এইভাবে আপনাকে মোতায়েনের ক্ষেত্রে কেবল এটির একটি অবস্থান পরিবর্তন করতে হবে।
সর্বवेश

উত্তর:


136

জাভাস্ক্রিপ্ট ফাইল পাথ

স্ক্রিপ্টে থাকা অবস্থায় পাথগুলি প্রদর্শিত পৃষ্ঠার সাথে সম্পর্কিত

জিনিসগুলি আরও সহজ করার জন্য আপনি এর মতো কোনও সাধারণ জেএস ঘোষণাটি মুদ্রণ করতে পারেন এবং আপনার স্ক্রিপ্টগুলিতে এই ভেরিয়েবলটি ব্যবহার করে:

সমাধান, যা ফেব্রুয়ারী ২০১০ সালের দিকে স্ট্যাকওভারফ্লোতে নিয়োগ করা হয়েছিল :

<script type="text/javascript">
   var imagePath = 'http://sstatic.net/so/img/';
</script>

আপনি যদি 2010 সালের দিকে এই পৃষ্ঠাটি ঘুরে দেখছিলেন তবে আপনি কেবল স্ট্যাকওভারফ্লো এর এইচটিএমএল উত্সটি দেখে নিতে পারেন, আপনি এই ব্যাডাস ওয়ান- লাইনারটি [3 লাইনকে ফর্ম্যাটেড করেছেন]] <head />বিভাগে খুঁজে পেতে পারেন


7
আমি এই কাজটি শেষ করেছিলাম, imagePath.ধন্যবাদ বাদ দিয়ে মান উত্পন্ন করতে আমি url.Content ব্যবহার না করে !
নট

4
হাহা আমিও একই কাজ করেছি, তারপরে ফিরে এসে আপনার মন্তব্যের নেটে পড়লাম।
শেভ

4
এটি কাজ করে তবে এটি একটি সংজ্ঞায়িতভাবে একটি কার্যকর, সঠিক সমাধান নয় a @ শিক্ষার উত্তর আমাকে ওপির সমস্যার সমাধান দিয়েছে।
ড্যানিলোকিও

7
আমি অ্যাপ্লিকেশন রুট Url.Content("~")পেতে ব্যবহৃত । এইচটি
গ্রাহামএফ

4
আমিও করতে চাইvar imagePath = window.location.protocol + "//" + window.location.host + "/"
JeanValjean

48

jQuery ব্যবহার করে চালানোর সময় আপনার জাভাস্ক্রিপ্ট ফাইলের অবস্থানটি 'src' বৈশিষ্ট্যের জন্য ডিওএমকে বিশ্লেষণ করে পার্স করুন:

var jsFileLocation = $('script[src*=example]').attr('src');  // the js file path
jsFileLocation = jsFileLocation.replace('example.js', '');   // the js folder path

(ধরে নিলাম আপনার জাভাস্ক্রিপ্ট ফাইলটির নাম দেওয়া হয়েছে 'উদাহরণ.js')


"(" # FkngDiv ")। লোড (jsFileLocation +" ../ FkngFolder / FkngPage.aspx ") আমার জন্য কবজির মতো কাজ করেছে। আমি একটি ফোল্ডার স্তর ফিরে যেতে এটি এইভাবে ব্যবহার করছি এবং তারপরে আমি কেবল আমার কাঙ্ক্ষিত পথে নির্দেশ করব।
ড্যানিলোকিও

6
খুব ভাল উত্তর। আমি পরিবর্তন চাই .replaceমত প্রকাশের jsFileLocation.replace(/example\.js.*$/, '')ক্ষেত্রে সেখানে পরে একটি সংস্করণ নম্বর মত একটি কোয়েরি স্ট্রিং এর.js
yitwail

4
আপনি প্রিয় স্যার, আমার নতুন নায়ক! ASP.NET MVC অ্যাপ্লিকেশনটিতে সার্ভারে আমার
সিএসএসের সন্ধানের

27

একটি উপযুক্ত সমাধান জেএস ফাইলে এসসিআর লেখার পরিবর্তে সিএসএস ক্লাস ব্যবহার করা হয়। উদাহরণস্বরূপ ব্যবহারের পরিবর্তে:

$(this).css("background", "url('../Images/filters_collapse.jpg')");

ব্যবহার:

$(this).addClass("xxx");

এবং একটি CSS ফাইল যা পৃষ্ঠাতে লোড করা আছে তা লিখুন:

.xxx {
  background-image:url('../Images/filters_collapse.jpg');
}

4
আমি কোনও সিএসএস অ্যাট্রিবিউট ব্যবহার করলে এটি কাজ করে না। উদাহরণস্বরূপ: <img src="/codes/imgs/a.png">। আমি CSS দ্বারা এই src বৈশিষ্ট্যটি সেট করতে পারি না।
রেজা

14

ভাল প্রশ্ন.

  • যখন কোনও সিএসএস ফাইলে থাকে তখন ইউআরএল সিএসএস ফাইলের সাথে সম্পর্কিত হবে।

  • জাভাস্ক্রিপ্ট ব্যবহার করে বৈশিষ্ট্যগুলি লেখার সময়, URL গুলি সর্বদা পৃষ্ঠার তুলনায় হওয়া উচিত (অনুরোধ করা মূল উত্স)।

tildeআমি জানি জেএসে অন্তর্নির্মিত কোনও কার্যকারিতা নেই । স্বাভাবিক উপায়টি হ'ল জাভাস্ক্রিপ্টের ভেরিয়েবলটি বেস পাথটি নির্দিষ্ট করে:

<script type="text/javascript">

  directory_root = "http://www.example.com/resources";

</script> 

এবং আপনি যখন ইউআরএলকে গতিশীলরূপে নির্ধারণ করেন তখনই এই মূলটিকে উল্লেখ করতে।



5

আমি যে এমভিসি 4 অ্যাপ্লিকেশনটিতে কাজ করছি তার জন্য, আমি _লিআউট.একটিএমটিএলে একটি স্ক্রিপ্ট উপাদান রেখেছি এবং প্রয়োজনীয় পথের জন্য একটি বৈশ্বিক পরিবর্তনশীল তৈরি করেছি, যেমন:

<body>

<script>
    var templatesPath = "@Url.Content("~/Templates/")";
</script>

<div class="page">
    <div id="header">

       <span id="title">

        </span>
    </div>
    <div id="main">


        @RenderBody()
    </div>
    <div id="footer">
        <span></span>
    </div>
</div>


4

আমি পেক্কার প্যাটার্ন ব্যবহার করেছি। আমি অন্য একটি প্যাটার্ন মনে করি।

<script src="<% = Url.Content("~/Site/Scripts/myjsfile.js") %>?root=<% = Page.ResolveUrl("~/Site/images") %>">

এবং myjsfile.js এ ক্যোরিস্ট্রিং পার্স করেছেন।

প্লাগইনস | jQuery প্লাগইনস


2

জাভাস্ক্রিপ্টে asp.net টিল্ডা ("~") বিলাসিতা উপভোগ করতে দয়া করে নিম্নলিখিত বাক্য গঠনটি ব্যবহার করুন

<script src=<%=Page.ResolveUrl("~/MasterPages/assets/js/jquery.js")%>></script>

2

এটি আমার জন্য কাজ করার জন্য খুঁজে পেয়েছি।

    <script> document.write(unescape('%3Cscript src="' + window.location.protocol + "//" +     
    window.location.host + "/" + 'js/general.js?ver=2"%3E%3C/script%3E'))</script>

অবশ্যই স্ক্রিপ্ট ট্যাগের মধ্যে ... (স্ক্রিপ্ট ট্যাগগুলি কেন এই পোস্টে প্রদর্শিত হয়নি তা আমি নিশ্চিত নই) ...


আমি জানি না কেন আপনার উত্তরটি নীচে নামল। কয়েক ঘন্টা সংগ্রামের পরেও এটাই আমার পক্ষে কাজ করেছে ... (Y)
জিয়া উল রেহমান মুঘল

আমি মনে করি কারণ এই পয়েন্ট servername / JS বদলে servername / applicationName / JS , যা আমি মনে করি "/ JS" থেকে কোন পার্থক্য নাই
user1566694

0

আপনাকে এটি যুক্ত করতে runat="server"এবং এটির জন্য একটি আইডি নির্ধারণ করতে হবে, তারপরে এর মতো পরম পথটি নির্দিষ্ট করুন:

<script type="text/javascript" runat="server" id="myID" src="~/js/jquery.jqGrid.js"></script>]

কোডবিহাইন্ড থেকে, আপনি আইডিটি ব্যবহার করে সিআরসি প্রোগ্রামক্রমে পরিবর্তন করতে পারবেন।


0

এটিএসপি.এনইটি ওয়েবফোমে ভাল কাজ করে।

স্ক্রিপ্টটি এতে পরিবর্তন করুন

<img src="' + imagePath + 'chevron-large-right-grey.gif" alt="'.....

প্রতিটি ডিরেক্টরি স্তরের জন্য আমার কাছে একটি মাস্টার পৃষ্ঠা রয়েছে এবং এটি পৃষ্ঠা_ইনাইট ইভেন্টে

  Dim vPath As String = ResolveUrl("~/Images/")
    Dim SB As New StringBuilder
    SB.Append("var imagePath = '" & vPath & "'; ")
    ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "LoadImagePath", SB.ToString, True)

অ্যাপ্লিকেশনটি স্থানীয়ভাবে চালিত হয় বা নির্ধারিত তা নির্বিশেষে আপনি সঠিক পুরো পথটি পান get

http://localhost:57387/Images/chevron-large-left-blue.png
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.