2012-11-07 142 views

Trả lời

37

Bạn có thể điều tra sưu tập kịch bản tại địa chỉ:

var scripts = document.getElementsByTagName("script"); 

Đối với mỗi phần tử trong mảng trở scripts bạn có thể truy cập vào thuộc tính src của nó.

Tệp bao gồm hiện đang thực thi sẽ luôn là tệp cuối cùng trong mảng scripts. Vì vậy, bạn có thể truy cập nó tại scripts[scripts.length-1]. Tất nhiên điều này sẽ chỉ hoạt động tại thời điểm chạy mã ban đầu và sẽ không hữu ích ví dụ trong một hàm được gọi sau khi tập lệnh ban đầu được tải, vì vậy nếu bạn cần giá trị sau này, bạn sẽ cần lưu nó vào một biến.

+0

cảm ơn, đây là những gì tôi muốn – hguser

+0

Nó sẽ có tác dụng nếu chúng tôi đã bao gồm nhiều file ... sau đó mỗi tệp js sẽ hiển thị đường dẫn src riêng của nó như thế nào .. ?? – xxbinxx

+0

Đáng chú ý là bạn có thể muốn sử dụng một phương tiện khác để lấy tập lệnh mà bạn muốn ra khỏi mảng 'script'. Tôi sử dụng phương pháp này, nhưng có báo cáo rằng tất cả các như vậy thường xuyên trong Firefox (blegh ...) có một kịch bản đó đã được nạp vào thời gian logic của tôi grabs rằng mảng của các yếu tố. Điều thông minh cần làm là lấy như 3 người cuối cùng và lặp lại chúng và tìm một người có tên tệp mà bạn đang tìm kiếm. –

21

Lấy tên đường dẫn hiện tại của tập tin javascript

Đặt này trong thư mục apache của bạn bên dưới/tmp và gọi nó là test.html. Truy cập vào url

localhost/grader/test.html?blah=2#foobar 

Javascript:

<html> 
<script> 
    alert(location.pathname); // /tmp/test.html 
    alert(location.hostname); // localhost 
    alert(location.search); // ?blah=2 
    alert(document.URL);  // http://localhost/tmp/test.html?blah=2#foobar 
    alert(location.href);  // http://localhost/tmp/test.html?blah=2#foobar 
    alert(location.protocol); // http: 
    alert(location.host);  // localhost 
    alert(location.origin); // http://localhost 
    alert(location.hash);  // #foobar 
</script>        
</html> 

Thông tin thêm về các thuộc tính của vị trí: http://www.w3schools.com/jsref/obj_location.asp

Hoặc nếu bạn có jquery:

<html> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"> 
</script> 
    $(location).attr('href');  // http://localhost/tmp/test.html?blah=2#foobar 
    $(location).attr('pathname'); // /tmp/test.html 
</script> 
</html> 
1

này sẽ làm việc. Tuy nhiên, nó yêu cầu bạn đã biết tên tập lệnh là gì. Nhưng trong hầu hết các trường hợp, bạn sẽ biết điều đó.

function absFileLoc(filename) { 
    var scriptElements = document.getElementsByTagName('script'); 
    for (var i = 0; i < scriptElements.length; i++) { 
    var source = scriptElements[i].src; 
    if (source.indexOf(filename) > -1) { 
     var location = source.substring(0, source.indexOf(filename)) + filename; 
     return location; 
    } 
    } 
    return false; 
} 
+0

Đây là chức năng cùng với chức năng nhận được vị trí tuyệt đối của các tệp css. https://gist.github.com/jamrizzi/44bac4240057b4a89a2d918d05680e3d – jamrizzi

-2

Hãy thử điều này nếu bạn muốn có được tên file hiện tại hay thư mục

location.href.split('/')[ location.href.split('/').length - 1 ];

+0

location.href lấy url của trang web hiện tại, không phải tệp javascript hiện đang thực thi. – CpnCrunch

+0

chúng tôi lần đầu tiên nhận được url, hơn là chia nó để có được phần mong muốn. location.href.split ('/') [0]; // lấy phần đầu tiên location.href.split ('/') [location.href.split ('/'). length - 1]; // lấy tên tập tin – Amr

+0

Không, không đúng. Bạn đang nhận được url của trang, chứ không phải tệp javascript hiện tại. Nếu bạn đặt mã javascript đó vào một tệp www.abc.com/file.js được bao gồm trong www.def.com/page.html, location.href sẽ trả về www.def.com/page.html. Câu hỏi đặt ra là hỏi cách lấy tên của tệp javascript, tức là www.abc.com/file.js. – CpnCrunch

0

Tôi biết đây là một câu hỏi cũ, nhưng vẫn thực tế vì IE vẫn không cung cấp script src.

Các hình thức tốt nhất cho tôi là cung cấp cho các thẻ script một id duy nhất:

<script id="kuvaScript" src="jscripts/kuva/kuva.min.js"></script> 

Bên trong kịch bản tôi sử dụng:

var thisScript = $("#kuvaScript").attr("src"); 
    var thisPath = thisScript.split('/').slice(0, -1).join('/')+'/'; 

Nó sẽ giữ định dạng src vì nó là (tương đối hoặc hoàn thành) và đã được thử nghiệm trong IE và Chrome.

Hy vọng nó sẽ giúp bạn tiết kiệm rất nhiều thời gian.

0

Rất dễ

Đặt này trong * .js file bạn muốn để có được đường dẫn:

let scripts = document.getElementsByTagName('script') 
let lastScript = scripts[scripts.length -1] 
console.log('lastScript', lastScript.src) 
Các vấn đề liên quan